ehm ho scritto male!
class prova2 extends prova
ovviamente!
ehm ho scritto male!
class prova2 extends prova
ovviamente!
Posso fare un po' di "critica costruttiva"? Non per sminuire il lavoro fatto, però una pagina che inizia così:
Mi fa un po' sorridere!Programmazione ad oggetti o programmazione strutturale?
La risposta è semplice: programmazione ad oggetti...il problema è che la programmazione ad oggetti (OOP d'ora in avanti) non è supportata in modo molto "convincente" dalla versione attuale di PHP, e soprattutto sembra essere una rgomento ostico per molti.
Del tipo: "Cara, stasera si va al ristorante o in pizzeria?"
Lei: "Preferisco il ristorante".
"Bene, eccoci arrivati, peccato che qui facciano solo pizze e, se proprio rompi le scatole, un paio di primi"!
Poi, se posso aggiungere altre "opinioni personali in ordine sparso", sperando possano essere di aiuto a qualcuno e creare ulteriori argomenti di discussione:
- la programmazione OO è utilizzata per gestire soprattutto progetti di una certa dimensione, dove servono spesso elementi riutilizzabili e modificabili senza la riscrittura di linee e linee di codice (da qui l' "extends")
- la programmazione procedurale è più pratica, veloce, se volete anche meno "cervellotica"!!
- al momento, come detto in testa alla pillola, gli oggetti sono supportati in una maniera che definirei "provvisoria"! Non che non funzionino, anzi, solo che un programmatore magari esperto di Java si potrebbe chiedere che razza di "cosa" sia PHP che non supporta alcune delle caratteristiche che lui è abituato ad utilizzare! Pare che nelle prossime release di PHP il sopporto OO verrà migliorato ... Personalmente, spero che che non venga sottovalutato il metodo procedurale a favore del metodo OO o viceversa ... Vedremo, fin'ora il team di sviluppo non ha mai scontentato nessuno!!
Ultimissima cosa (giuro!). Mi pare, e qui parlo per pura esperienza personale, che per un programmatore abituato alla programmazione procedurale trovi gli oggetti un qualche tipo di "entità indefinibile" della quel si chiede l'utilità, e che un programmatore abituato a lavorare ad oggetti consideri il metodo procedurale come un qualcosa di adatto agli "script kiddies" ...
Personalmente, li uso entrambi, dando quasi sempre la precedenza al procedurale (ho sempre guardato male anche gli oggetti in Perl, sarà deformazione professionale ma continuo a preferire le buone e vecchie subroutines!!), anche se spesso mi è capitato di scegliere il metodo OO per una serie di motivi, in primis la riutilizzabiltà e l'estendibilità in progetto complessi ...
Altre impressioni in merito?
Bene, tedio terminato!![]()
quando crei un'istanza della classe figlia, NON viene eseguito il costruttore della classe padre, per cui nel costruttore della figlia dovresti inserire esplicitamente il richiamo al costruttore della classe padremi sono rimasti solo un paio di quesiti
esempi:
se volessi chiamare anche il costruttore di padre, lo dovrei richiamare esplicitamente:codice:class Padre { function Padre() { echo 'costruttore padre'; } } class Figlia { function Figlia() { echo 'costruttore figlia'; } } // creo un'istanza di Figlia: $var = new Figlia; // cosi viene eseguito solo il costruttore di Figlia
nel caso in cui le due classi abbiano due funzioni (una a testa) con lo stesso nome, la scrittura $this->funzione(); richiama la funzione della classe, mentre la scrittura Classe::funzione(); richiama la funzione della classe appropriata.codice:class Figlia extends Padre { function Figlia() { $this->Padre(); echo 'costruttore figlia'; } }
esempio
spero di essere stato chiaro e soprattutto di non aver scritto castronerie :Dcodice:class Padre { function pippo() { echo 'pippo dentro a padre'; } } class Figlia extends Padre { function pippo() { echo 'pippo dentro a figlia'; } } // creo un oggetto Figlia $var = new Figlia; // pippo() della classe Figlia $var->pippo(); // pippo() della classe Padre Padre::pippo();
Tutti hanno bisogno di credere in qualcosa.
Io credo che mi farò un'altra birra.
sono d'accordo un po su tuttoPosso fare un po' di "critica costruttiva"?
ah dimenticavo... complimenti per il pillolone![]()
Tutti hanno bisogno di credere in qualcosa.
Io credo che mi farò un'altra birra.
Solo una cosa...anche il Java non supporta l'ereditarietà multipla.Originariamente inviato da Dark Bard
come potete notare, non è obbligatorio che una classe abbia una superclasse, ma in caso succeda, a superclasse può essere una sola. Infatti PHP non supporta l'ereditarietà multipla (punto di forza di C++ e Python), che permette di ereditare metodi e proprietà da più genitori, come il più blasonato Java.
levo il paio di stronzate e metto a posto due cosucce, poi ti faccio sapere tutto...se vuoi ti invio il TXT formattato in VBcode...Originariamente inviato da saibal
ok...facciamo così: io la inserisco la settimana prossima. se vuoi fare qualche correzione hai tempo.
come autore dell'articolo che metto? il tuo nick o il tuo nome (che neanche so?)
eXtending-Php.net coming soon ...
di fatti ho scritto:Originariamente inviato da Kylnas
Solo una cosa...anche il Java non supporta l'ereditarietà multipla.
Infatti PHP non supporta l'ereditarietà multipla ... come il più blasonato Java.
eXtending-Php.net coming soon ...
rileggendo il tutto sono d'accordo con te per quanto riguarda l'introduzione...io, abituato a programmare ad oggetti, consiglio questo tipo di programmazione...non volevo sminuire la procedurale...era solo un'intro generale...Originariamente inviato da ev
Posso fare un po' di "critica costruttiva"? ...
comunque la pillola era sulla programmazione ad oggetti in PHP, non sul fatto che convenga o no utilizzarla...infatti ho evitato di esplicare i soliti "punti forti" della OOP...
ognuno è libero di programmare come vuole, ma ti voglio vedere a gestire un programmone scritto in Pascal oppure uno scritto in Python...a parte la differenza tra i tempi di sviluppo,anche tra quelli di ottimizzazione e di revisione del codice c'è un abisso...non per nulla gli ultimi linguaggi usciti supportano appieno la OOP (non tralasciando comunque il procedurale).
A quanto la penso io, in caso dobbiate scrivere uno stupidissimo guestbook, non ve ne dovrebbe fregare molto degli oggetti, mentre in caso di sviluppi di progetti più grandi, che magari richiedono una collaborazione, è un mio consiglio (ma nessuno vi obbliga a farlo...vBulletin è scritto in procedurale ed è un ottimo forum) usare la OOP...
Comunque grazie della critica
se ci sono problemi dite pure...ciao
eXtending-Php.net coming soon ...
Certo, non per niente avevo premesso che i miei erano "pensieri in libertà"! Non credo che in un forum come questo stonino discussioni di "stile" o di "metodo" oltre alle classiche domande-risposte!comunque la pillola era sulla programmazione ad oggetti in PHP, non sul fatto che convenga o no utilizzarla...infatti ho evitato di esplicare i soliti "punti forti" della OOP...
Se poi sia meglio iniziare un thread proprio per questi motivi, nulla in contrario!
Guarda, a parte la gran mano che danno gli oggetti anche per un discorso di ordine (e qui torno sul discorso di una classe che ne estende un'altra ... Vai al punto senza dover riscrivere righe e righe ogni volta), c'è da considerare (soprattutto?) la mano che scrive il codice! Sarà che sono un precisino da fare spavento (ho sempre le mie directory lib/ config/ e altre "standard"!), ma spesso si trova nel codice un tal caos che oggetti o non oggetti perdi le ore (se non le giornate!) solo per capire la logica del codice! Ma quello della "cura" del/i programmatore/i è un discorso trito e ritrito!ognuno è libero di programmare come vuole, ma ti voglio vedere a gestire un programmone scritto in Pascal oppure uno scritto in Python![]()
Ciao!
ev che spera di non essere OT!
in effetti il "problema" puo` essere il riuscire a capire quando realmente programmare ad oggetti in php puo` essere piu` utile della strategia procedurale. programmare ad oggetti porta a soluzioni eleganti e pulite, tuttavia spesso per progetti medio-piccoli l'impressione che ho avuto (personalissima) e` che l'utilizzo della oop era quasi piu un esercizio di stile che non una reale necessita`.A quanto la penso io, in caso dobbiate scrivere uno stupidissimo guestbook, non ve ne dovrebbe fregare molto degli oggetti, mentre in caso di sviluppi di progetti più grandi, che magari richiedono una collaborazione, è un mio consiglio (ma nessuno vi obbliga a farlo...vBulletin è scritto in procedurale ed è un ottimo forum) usare la OOP...
attendiamo con ansia i nuovi sviluppi per la versione 5![]()
Tutti hanno bisogno di credere in qualcosa.
Io credo che mi farò un'altra birra.