YiiFramework Глобальные переменные в Yii.

Статус
В этой теме нельзя размещать новые ответы.

Dimanoss

Новичок
Как правило, бывает нужно сформировать некий пул из переменных, функций или объектов, доступ к которым желателен в любое время и из любого закоулка приложения. Как с точки зрения Yii было бы это правильнее оформить - в каких файлах, на каких этапах... С константами, вроде, более-менее понятно - есть protected/config/main.php... А как с остальным? Например - некая инициализация приложения перед его работой (набор функций переписывают дефолтные значения переменных, настраивая его под какие-либо условия)...

Возможно ли присвоение Yii::app() новых переменных? Не будет ли это как-то нарушать целостность/безопасность/философию фреймворка? И наметились ли какие-то изменения в этом плане во второй версии?
 

hell0w0rd

Продвинутый новичок
Да пофиг, берешь из какого-нить контроллера в Yii::app() все перефигачиваешь и в продакшн
 

Dez

Новичок
Отвечаю насчет Yii2.

Какие то переменные можно хранить в Yii::$app->params

Инициализировать можно в обработчике события Application::EVENT_BEFORE_REQUEST
Или в init() методе какого то своего компонента, который в preload прописан.
 

Dimanoss

Новичок
С переменными ясно. Yii::app()->params или даже Yii::app()->myVars. А вот например класс со всякой нужной всячиной. Тоже, наверное в Yii::app()->myClass можно будет засунуть... Нормально, как думаете? Не смертный грех? А иницилизировать прямо в index.php (не перебор?)...
 
С переменными ясно. Yii::app()->params или даже Yii::app()->myVars. А вот например класс со всякой нужной всячиной. Тоже, наверное в Yii::app()->myClass можно будет засунуть... Нормально, как думаете? Не смертный грех? А иницилизировать прямо в index.php (не перебор?)...
для каких целей можно хранить класс в переменной?
по-моему вы хотите наговнокодить, и лучше спросить как лучше, а не можно ли.
 

Dimanoss

Новичок
для каких целей можно хранить класс в переменной?
ну, эт, конечно, я погорячился, но токмо от незнания предмета, не со зла. :) Есть у меня задумка собрать свой класс (сначала думал - абстрактный, теперь понадобился "нормальный"), но так, чтобы он существовал во всё время работы проекта. Чтобы доступ был к нему глобален. Чтобы инициализация его (создание экземпляра класса) проходила сразу после создания экземпляра Yii (по крайней мере - до активных боевых действий вроде авторизации или вообще - построения/вывода контента).

по-моему вы хотите наговнокодить
:):):).. этим я на работе занимаюсь, за зарплату, там начальнику всё нужно "лишь бы работало, но - вчера"... А в воскресенье, вместо хоккея и пива, я Вам Уважаемые, кровь тут порчу именно потому, что хотелось бы как раз научиться всё изящненько и правильно с точки зрения MVC в целом и Yii - в частности. Сталкиваться с фреймворками (не любитель я их) по работе приходится всё чаще, вот и хотелось бы эту темку более-менее досконально разобрать...
 
ну, эт, конечно, я погорячился, но токмо от незнания предмета, не со зла. :) Есть у меня задумка собрать свой класс (сначала думал - абстрактный, теперь понадобился "нормальный"), но так, чтобы он существовал во всё время работы проекта. Чтобы доступ был к нему глобален. Чтобы инициализация его (создание экземпляра класса) проходила сразу после создания экземпляра Yii (по крайней мере - до активных боевых действий вроде авторизации или вообще - построения/вывода контента).

:):):).. этим я на работе занимаюсь, за зарплату, там начальнику всё нужно "лишь бы работало, но - вчера"... А в воскресенье, вместо хоккея и пива, я Вам Уважаемые, кровь тут порчу именно потому, что хотелось бы как раз научиться всё изящненько и правильно с точки зрения MVC в целом и Yii - в частности. Сталкиваться с фреймворками (не любитель я их) по работе приходится всё чаще, вот и хотелось бы эту темку более-менее досконально разобрать...
что там в классе будет-то? какие задачи решает? может его достаточно в область видимости положить, если он хелпер? или создать компонент и прописать его в конфиге?
 

Dimanoss

Новичок
ну, с функциональностью его я пока не особо определился. Например - время от времени мне нужно проверять существование таблицы в БД, кое-какие параметры (например - количество записей) собирать. Плодить в каждом контроллере такое - как-то глупо, одной функции на всё приложение - за глаза. Или, скажем, - многоязычное приложение, все тексты и элементы интерфейса должны существовать во многих языковых вариантах. Языковой вариант подгружается либо после авторизации пользователя, либо по языковым настройкам браузера, но и до этого используется дефолтовый язык. Т.е. - думал, после создания экземпляра Yii я загружаю дефолтовый язык, после авторизации - подгружаю требуемый. Т.е. - мне нужно хранилище изменяемых по ходу действия преременных и время от времени используемых функций вне зависимости от того, с каким объектом на данный момент идёт работа...
 
ну, с функциональностью его я пока не особо определился. Например - время от времени мне нужно проверять существование таблицы в БД, кое-какие параметры (например - количество записей) собирать. Плодить в каждом контроллере такое - как-то глупо, одной функции на всё приложение - за глаза. Или, скажем, - многоязычное приложение, все тексты и элементы интерфейса должны существовать во многих языковых вариантах. Языковой вариант подгружается либо после авторизации пользователя, либо по языковым настройкам браузера, но и до этого используется дефолтовый язык. Т.е. - думал, после создания экземпляра Yii я загружаю дефолтовый язык, после авторизации - подгружаю требуемый. Т.е. - мне нужно хранилище изменяемых по ходу действия преременных и время от времени используемых функций вне зависимости от того, с каким объектом на данный момент идёт работа...
а сколько вы проектов на yii сделали? по-моему у вас такие запросы, потмоу что вы не помнаете как оно все работает.
 

Dimanoss

Новичок
ни одного и не делал, с PHP уже лет пятнадцать работаю, но на более низком уровне (скрипты для обслуживания БД, экспорты-импорты, файловые операции). На работе сейчас простенькую админку для проекта делаю, но там всё более-менее понятно, большинство нуобходимого gii генерирую, остальное дописываю. Хотелось бы с фреймворками поплотнее разобраться. Выбрал Yii именно для того, чтобы как-то с MVC поработать, во всё это безобразие въехать. Сижу вот дома, придумываю нетривиальные задачки и пробую их как-то решить...
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
господа, не берите yii, он вам только усложнит жизнь, берите Битрикс - там все просто, понятно, и такой же говнокод, как у вас
 
Последнее редактирование:

Dimanoss

Новичок
С переменными ясно. Yii::app()->params или даже Yii::app()->myVars.
ан нет, не разрешено так вот запросто в душу залазить,
Код:
Yii::app()->sklad = new mySklad;
Yii::app()->sklad->salut();
на создание объекта выдаёт
Код:
Property "CWebApplication.sklad" is not defined.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
так, с первого раза не поняли. закрываю эту х$%^

Сначала читаем документацию, потом осознаем смысл, потом советуем.

Я серьезно, берите Джумлу. Мы тут переписываем подобные "компоненты" за некоторыми говнокодерами. Если бы они взяли Джумлу - было бы проще: выкинули бы нафиг, и написали бы красиво на yii :) А так приходится признать, что дешевле исправить.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху