[Risolto] Problema Con Ereditarietà Dei Controller Dentro Ad Un Model

ho un modulo whmcs che contiene, a parte il DefaultController, altri due controller.

Ora ho pensato di creare un WhmcsController, dove inserire alcuni filtri e la index di default.

Ho modificato gli altri due controller in modo che estendano WhmcsController invece di Controller

Il problema è che accedendo ad uno qualsiasi di questi moduli ottengo




include(WhmcsController.php): failed to open stream: No such file or directory



Il nome del file è corretto, il nome della classe è corretto. Il file è leggibile ed è davvero presente nella cartella whmcs/controllers.

Costa sto sbagliando !?

Quali sono i moduli di cui parli?

Mi spiego meglio, nel frattempo colgo l’occasione per segnalare che ho risolto. La soluzione è fra poche righe.

Allora il modulo è questo


\protected\modules\whmcs\

li dentro c’è ovviamente la cartella controller

la cartella contiene




DefaultController

ClientController

CreditController

A questo punto, dato che client e credit hanno cose in comune, ho creato, sempre dentro a whmcs\controller, il file


WhmcsController

quindi ho modificato ClientController e CreditController perchè estendano WhmcsController (che a sua volta estende Controller).

Quando però eseguo, per esempio, l’azione


index.php?r=whmcs/client/index 

ottengo l’errore


include(WhmcsController.php): failed to open stream: No such file or directory

Un collega geniale mi ha fatto notale che Controller dovrebbe esssere un componente, percui ho creto


whmc/components/

e ci ho spostato dentro WhmcsController

A questo punto ClientController e CreditController sono stati liberi di estendere WhmcsController, senza alcun import, ne alcun’altra configurazione aggiuntiva

Come può un controller essere un componente?

cartella protected/component/ c’è il Controller da cui ereditano tutti gli altri, giusto?

così avviene anche per protected/modules/component

tutto qui

Io chiamo controller solo quei files che si trovano dentro alla cartella protected/controllers. Quindi posso chiamare controller base, oppure componente, quel file che si chiama Controller.php e che si trova dentro alla cartella protected/components. Anzi, a dire il vero avrebbe più senso che quest’ultimo fosse una classe astratta. Mi piace essere pignolo su queste cose. Ma al di la della mia pignoleria (eccessiva e quasi fastidiosa alle volte XD) ho capito il problema. Anche se non mi è chiaro come mai quel file non fosse caricato di suo.

per autocaricarlo, nel file del modulo bisogna impostarlo tra gli auto import (scusami se io invece uso parole tutte tranne che tecniche…)