Dubbio mvc

Salve ho un dubbio che non riguarda yii ma l mvc :

faccio un esempio se dovessi creare un ipotetico db (molto semplificato) degli stati avrei una tabella con supponiamo 2 campi idStato e nomeStato , con relazione uno a molti con la tabella regioni in cui avrei idRegioni e nomeRegioni a sua volta uno a molti con idProvincia e nomeProvincia e via via andando avanti…

Il mio dubbio è , penso sia giusto creare un model per ogni tabella ,o sbaglio ? Per ogni model creerò poi un controller o un singolo controller in cui uso ( use app\models\Regioni; use app\models\Province; ecc ecc) i vari model ?

Anche se i controller potrebbero essere tutto sommato simili, io li specializzerei seguendo in pieno la logica MVC: un controller per un modello. Il vantaggio è anche questo: un controller più snello. Di conseguenza a runtime l’interprete non deve caricarsi un papiro ;)

Avendo però tutti i controller una parte in comune , dove mettereste questa parte e come farla vedere a tutti , in un contesto fuori da yii creerei delle classi e farei un include nelle pagine in cui ho bisognodi questa parte comune per non doverla riscrivere dappertutto .Qui come faccio?

Io, nella cartella "components", creerei la classe MyController estendendola da Controller ed inserirei li le parti condivise; esattamente come fa la class Controller, estesa a sua volta dalla classe CController, per impostare il supporto "condiviso" a CMenu e Breadcrumb.

Utilizzerei quindi la classe MyController come base di estensione dei controller "simili" che piazzerei nella cartella "controllers".

Non ho nessuna cartella components , va creata ? oppure è presente nella versione advanced?

Allora ho creato un a classe che chiamerò A che estende controller , e i vari controller in cui ho parti di codice in comune che estendono A , ho però il seguente errore :

Call to a member function getUniqueId() on a non-object

Sapete dove è l’errore o almeno a cosa potrebbe essere dovuto ?

Al fatto che non hai inizializzato l’oggetto della classe su cui vuoi chiamare il metodo getUniqueId()?

praticamente il problema è che avevo fatto un nuovo costruttore in una classe e non avevo richiamato il costruttore della classe madre