Sono un nuovo utilizzatore di Yii, e vorrei cercare di capire il più possibile di questo interessante framework.
Leggendo il codice autogenerato della mia prima applicazione mi sono inbattuto nella seguente istruzione
Yii::app()->user
ora, secondo le mie conoscenze di programmazione oop, Yii::app() dovrebbe stare a significare che si cerca di accedere al metodo statico app() della classe Yii, il quale metodo restituisce secondo la documentazione ufficiale l’istanza della classe CApplication. E’ esatto ?
Quindi se restituisce un oggetto istanza di CApplication nella documentazione ufficiale di tale classe nella lista delle proprietà ci dovrebbe essere user… perchè invece non lo trovo ?
e nonostante nella documentazione sia scritto chiaramente che Yii::app() ritorna CApplication (http://www.yiiframework.com/doc/api/1.1/YiiBase#app-detail) gli viene risposto che invece ritorna CWebApplication… boh… non sarà magari un errore nella documentazione ?
Nel caso di una applicazione web Yii::app() ti ritorna CWebApplication che estende CApplication, essendo la classe che si occupa di gestire le funzionalità specifiche per le richieste web, gestisce i controller applicando l’MVC all’interno della applicazione e tutta una serie di altre cose.
[size=“2”]nel tuo file index.php troverai all’ultima riga:[/size]
Yii::createWebAppliation($config)->run();
Questa istruzione esegue la funzione createWebApplication contenuta nel YiiBase (classe estesa dalla classe Yii che istanzi nell’index.php) alla riga 96,
almeno nella versione del framework 1.1.13. Questa funzione istanzia la classe CWebApplication (/framework/web/CWebApplication.php) che è a sua volta una
estensione della classe CApplication (/framework/base/CApplication.php).
La __construct di questa classe comanda di eseguire la funzione registerCoreComponents(). Nel caso di una WebApplication, questa è stata estesa per eseguire la funzione setComponents() passandogli come parametri un array di valore che comprende anche il famigerato ‘user’…
Questa funzione si trova nel file /framework/web/CModule.php (CApplication è una estensione di CModule) che a sua volta esegue, per ogni elemento dell’array
passato come parametro, la funzione setComponent (senza la ‘s’) che fà una serie di cose…
Capisco bene che potrebbe sembrare "arabo" e non voglio assolutamente sembrare uno di quelle persone alle quali fai le domande e che
ti rispondono "leggi la documentazione", ma penso che sia più utile, per chiarire i tuoi dubbi, spulciare il codice seguendo le funzioni sopra descritte…
Spero almeno di avere descritto i files corretti…
Grazie per la domanda perchè è stato un buon esercizio anche per me.
Grazie a te per la risposta ! proverò a spulciare il codice secondo le indicazioni che mi hai dato, anche se sono non mi sono del tutto chiare
confesso che un pò, però, comincio a pensare che quanto scritto nella documentazione sul fatto che app() ritorni CApplication possa essere inesatto, visto che in realtà ritorna CWebApplication…