Ciao Mzanella,
No, permettimi di dire che non hai capito, la struttura MVC è una struttura che fondamentalmente divide gli ambiti di lavoro, cioè cosa può fare l'utente e cosa fa il server, con cosa si interfaccia l'utente e con cosa si interfaccia il server, ma la base dell'MVC in maniera molto in soldoni, è una chiamata sempre ad index.php con una valorizzazione di una variabile.
Questo fa l'MVC la variabile viene passata al controller che testuali parole CONTROLLA, la variabile e se è tutto corretto invoca il model che si interfaccia con il server, il model analizza sviluppa e poi risponde alla view, o in alcuni casi al controller e il controller alla view.
Non sono io a dirlo ma programmatori da anni...Comunque la struttura del model view controller è proprio questa.
Quello che ho fatto io, l'ho fatto prendendo in esempio chi ne sa più di me ed aveva già fatto una struttura a classi per l'MVC io ho solamente implementato in base alle mie esigenze.
L'esempio che tu hai messo non è una forma di programmazione elegante, perchè in php > 5 sono stati introdotti apposta i namespace, proprio per ovviare al problema di classi con lo stesso nome o di metodi con lo stesso nome, quindi quello che hai scritto non è elegante a livello di programmazione, non serve, ogni classe ha un suo metodo che difficilmente è uguale al metodo di un'altra classe, a livello di programmazione, se classe mammifero ha un metodo = al metodo della classe figlia cane o della classe figlia gatto non ha senso includere il metodo nelle classi figlie ma si mette solo nella classe padre.
Nella programmazione ad oggetti TUTTI I METODI DEVONO ESSERE DISTINTI, altrimenti si fa un minestrone, il namespace cosa fa?impone un path, ma perchè si usa il namespace perchè essendo PHP un linguaggio open source può essere che l'utente installa classi di altri utenti e queste classi possono avere nomi uguali, ma dato che io non devo installare nessun classe in open source ma sono io che faccio il progetto ed il progetto è PRIVATO E NON SARA' MAI OPEN SOURCE non ha senso che uso i namespace.
Il mio problema è il seguente
Codice PHP:
class A{
public function provaA(){
print 'ciao sono prova della classe A';
}
}
class B{
public function provaA(){
print 'ciao sono prova della classe B';
}
}
Io non voglio che questo accada per diversi svariati motivo uno di questi è la velocità di debug, quindi ho inserisco dei namespace ma ribadisco NON LO VOGLIO FARE perchè così permetto la valorizzazione di metodi con nome uguale in classi diverse e non parentate.
Poi c'è l'altro caso, perchè il caso in cui le classi non hanno parenti grandi problemi non ce ne sono ma quando le classi hanno parenti e cioè:
Codice PHP:
class A{
public function provaA(){
print 'ciao sono prova della classe A';
}
}
class B extends A{
public function provaB(){
print 'ciao sono prova della classe B';
}
}
class C extends A{
public function provaC(){
print 'ciao sono prova della classe C';
}
}
Io ho creato il codice che mi dice chi è figlio di A e recupero tutti i metodi del padre A(ed anche dei figli volendo), ma ovviamente il metodo provaA non è un doppione ma è un metodo comune alla classe padre...Il problema ancora più intrinseco è questo e sinceramente non so come risolverlo...cioè
Codice PHP:
class A{
public function provaA(){
print 'ciao sono prova della classe A';
}
}
class B extends A{
public function provaB(){
print 'ciao sono prova della classe B';
}
}
class C extends B{
public function provaC(){
print 'ciao sono prova della classe C';
}
}
class D extends B{
public function provaD(){
print 'ciao sono prova della classe D';
}
}
Qui non ci sono metodi doppioni ma se io per fare il controllo prendo i metodi dei padri e dei figli ovviamente il parse trova dei metodi doppioni perchè C ha come metodi provaA provaB provaC e D ha come metodi provaD provaB e provaA capisci che sembrano doppioni?Ma non lo sono....quindi ovviamente io non voglio che in class D non ci sia il metodo provaA per esempio, ma voglio permettere solo metodi con nomi diversi....ma devo controllare il caso in cui sono parenti.
Perchè imporre che i metodi abbiano un nome univoco non è difficile ma devi tenere in considerazione il caso in cui ci siano figli di classi...Hai capito adesso?
Cioè io non voglio che capiti questo caso:
Codice PHP:
class A{
public function provaA(){
print 'ciao sono prova della classe A';
}
}
class B extends A{
public function provaB(){
print 'ciao sono prova della classe B';
}
}
class C extends B{
public function provaC(){
print 'ciao sono prova della classe C';
}
}
class D extends B{
public function provaA(){
print 'ciao sono prova della classe D';
}
public function provaB(){
print 'ciao sono prova della classe D';
}
}
ps:get_class method lo conosco bene, mzanella, ho già tutto io ho sia quali sono i metodi sia quante classi ci sono quali sono i padri e quali sono i figli ho tutto...recupero i metodi dei figli e dei padri ma poi appunto troverà dei metodi doppi ma non sono doppi in verità perchè sono metodi ereditati...Invece l'ultimo caso è DOPPIO ed è quello che devo impedire...Ed anche il primo caso cioè metodi con nome uguale in classi che non sono parenti...ribadisco è una chicca perchè tu non puoi sviluppare in un file due funzioni con lo stesso nome(i metodi non sono altro che funzioni sia chiaro che o ad oggetti o procedurale si fanno le stesse cose non è che ci sono cose che non riesci a fare con il procedurale ed invece con gli oggetti si)....
pps:Ovviamente il controllo è il controller che lo fa e se il metodo quindi è valido chiama il model