yiiProgramowanie w PHP bez ustrukturyzowania aplikacji wymagało niegdyś sporo wysiłku. Teraz część zadań wykonują za nas frameworki. Oprócz wbudowanego MVC (alternatywnie MVP lub pochodnych) otrzymujemy wraz z szablonem szereg klas pomocniczych, nierzadko mnóstwo komponentów, wsparcie techniczne na forach publicznych powiązanych ze stroną domową frameworku, a także mnóstwo wtyczek funkcjonalnych. To wszem i wobec wiadomo. Yii posiada bardzo rozbudowaną dokumentację (również w języku polskim), dlatego nie będę się rozwodzić o tworzeniu aplikacji na podstawie szablonu. Dzisiaj rozwiążemy problem zmiennych/stałych globalnych wewnątrz aplikacji Yii. 

Dostęp wyłącznie z kontrolera?

Pytanie bardzo ważne, bowiem jeśli korzystanie ze stałych ma ograniczać się do wywoływania z kontrolera (lub widoku -zmienna wewnętrzna klasy, po której dziedziczą wszystkie kontrolery), czy ma być ogólnie dostępna.

W pierwszym przypadku musimy stworzyć klasę-komponent w szablonie np. Controller (protected->components->Controller.php), która będzie stanowić bazę wszystkich kontrolerów aplikacji. Nie zapominamy, że komponent musi być automatyczne ładowany, co wiąże się z odpowiednim wpisie w pliku konfiguracyjnym (domyślnie main.php protected->config):

'import'=>array(
	/*...*/
	'application.components.*',
	/*...*/
),

Każda publiczna zmienna w klasie Controller będzie widoczna w pochodnej klasie każdego kontrolera i widoku powiązanego z kontrolerem. Dostęp standardowy $this->variable.

Nie chcemy ograniczać dostępu do zmiennej (stałej) to umieszczamy ją w parametrach aplikacyjnych – Yii::app()->params. Zmienna aplikacyjna params jest powiązana z pozycją ‚params’->array() w pliku konfiguracyjnym.

Miłej pracy!