Prima di tutto, comprendere è un comando che leggere un file sorgente PHP e lo tratta come è stato scritto al posto della direttiva include. È possibile utilizzarlo su qualsiasi file di origine php e non è correlato all'ereditarietà della classe.
A proposito, se non si include il file contenente il codice sorgente di classe A non è possibile estendere tale classe.
Estendere una classe con la parola chiave estende implica il concetto di ereditarietà che è un concetto chiave nella programmazione orientata agli oggetti.
Si ottiene una classe (A) con alcuni metodi e si richiede una classe simile (B) con un comportamento leggermente diverso, è possibile derivare la nuova classe estendendo la classe A e modificando solo i metodi che devono cambiare (è chiamato ignorando) o aggiungendone di nuovi.
In fronte alla eredità c'è la composizione. Con la composizione non si estende una classe per cambiare il suo comportamento, invece si deve fare un patchwork di classi per ottenere il comportamento desiderato.
su Wikipedia si può trovare una spiegazione migliore sulle object composition e [l'eredità di classe] (http://en.wikipedia.org/wiki/Inheritance_(computer_science))
Sembra che ci sia un po 'di confusione su questi concetti, come estendere la classe A e, allo stesso tempo, è prova a comporlo (a proposito, la sintassi corretta è $ a = new B();).
un utile riferimento, ovviamente, [Gof, design pattern] (http://en.wikipedia.org/wiki/Design_Patterns_(book))
ciò che è più lenta estensione o comprendente Ho appena fatto un piccolo punto di riferimento, e ho trovato che l'estensione rende il codice leggermente più lento è questo quello che volevi dire..?.? – daniel
Dire che voglio invocare foo su A e delega foo a B, quindi ci sarà tempo per due chiamate di metodo nell'approccio Composizione. Se A estende B, invocando foo su A viene considerata una chiamata al metodo e non è necessario eseguire una ricerca tranne quando le classi sono definite (cosa che accade una volta). –