chiamare una funzione di un modulo, possibile bug o sbaglio?

oggi ho integrato il modulo yii-messages in una mia applicazione e successivamente occorrendomi il numero di messaggi non letti ho scritto:


$numMsg = Yii::app()->getModule('message')->countUnreadedMessages(Yii::app()->user->id);

risultato? mi dice che non ho passato il parametro alla funzione, il che non è vero, ma ccomponent non lo passa:

Stack trace:

Nota: quel codice è scritto dentro ad una funzione che viene richiamata da un renderDynamic

Temporaneamente ho ripiegato includendo il modello Message negli import di Yii e usando


$numMsg = Message::model()->getCountUnreaded(Yii::app()->user->id);

up

Che cosa c’è dentro ad Yii::app()->user->id quando ricevi quell’errore? Sei certo di essere loggato?

sono supercerto e debuggando vedo la variabile inizializzata correttamente

col debug vedo anche che CComponent non la passa proprio quando richiama countUnreadedMessages, per questo temo sia un bug

Se è un bug andrebbe segnalato su github. Sapresti riprodurlo? Se puoi riprodurlo voglio vedere anche io se riesco a capire di che cosa si tratta.

puoi riprodurlo installando in un progetto yii messages e usando la prima riga di codice che ho messo

se è un bug di ccontroller si può riprodurre anche tentando di chiamare una qualsiasi public function con almeno un parametro di un qualsiasi modulo

Ho appena scoperto, quasi per caso, l’inghippo. Perché mi è successa la stessa cosa chiamando una funzione di un model.

sia getModule() che model() non consentono di richiamare le funzioni getQualcosa come se fossero proprietà

cioè la funzione getCountUnreadedMessage non viene trovata se richiamata senza il get iniziale, perché le funzioni sono richiamate staticamente con Classe::nomefunzione e non come Classe->nomefunzione / proprietà

problema risolto:


$numMsg = Yii::app()->getModule('message')->getCountUnreadedMessages(Yii::app()->user->id);

mi domando se non sarebbe meglio uniformare il funzionamento delle chiamate