Programowanie 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 w 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!