Yii::createwebapplication

Sto studiando la documentazione ufficiale di Yii ma spesso mi imbatto in dubbi amletici come il seguente.

Il file index.php è il file di ingresso per l’applicazione, l’unico richiamabile direttamente dall’utente.

All’interno è presente questa istruzione

Yii::createWebApplication($config)->run();

la quale se non ho capito male richiama il metodo statico createWebApplication della classe Yii (in realtà YiiBase) alla quale passa il file di configurazione main.php.

Tale metodo restituisce un istanza della classe CWebApplication, di cui viene richiamato il metodo run() per avviare l’applicazione.

Se tutto quello che ho scritto fin qui è esatto la domanda è: la mia intera applicazione è quindi un istanza di CWebApplication ? e quindi viene vista come un oggetto ?

Si, e questo pattern si chiama Singleton.

Mi spieghi cosa intendi per pattern ?

Comunque grazie per la conferma, leggendo la guida ufficiale ecco alcuni passaggi che dovrebbero confermare quanto detto:

"The bootstrap script creates an Application instance and runs it"

"The application object encapsulates the execution context within which a request is processed"

"The application object is istantiated ad a singleton by the entry script. The application singleton can be accessed at any place via Yii::app()."

"By default, the application object is an instance of CWebApplication"

leggiti qualcosa su design pattern, anche se la tua richiesta esula un pò dal forum dedicato a yii

Noi informatici (programmatori) siamo soliti risolvere determinati problemi. Quando un problema è ricorrente si va a definire un pattern. I "Desgin Pattern" sono "problemi già risolti". Il Singleton è un pattern che consente di avere una ed una sola istanza di una classe. Yii è un singleton e ti permette, nonostante chiamate come queste, di non instanziare mai il secondo oggetto.




echo Yii::app()->user;

echo Yii::app()-> ... ;

echo Yii::app()-> ... ;

echo Yii::app()-> ... ;

echo Yii::app()-> ... ;



Yii viene instanziato una sola volta.

Grazie ! sei stato molto chiaro ;)