Ho una classe ae un'istanza utilizzando nuovaUso di __clone in PHP?
$obja = new a;
So che la differenza tra il seguito due linee
$obja2 = $ojba;
$obja2 = clone $obja;
Ma anche se si dichiara o non dichiara __clone nella classe un primo line $ obja2 si riferisce a $ obja memory space e la seconda riga crea una copia di $ obja. Fino a qui è chiaro per me.
Allora perché php sta avendo un metodo magico __clone? È solo per l'esecuzione di una serie di codici scritti all'interno di __clone mentre usiamo $ obja2 = clone $ obja;
Qualcuno, per favore, aiuta a farsi un'idea migliore.
Esiste per consentire di clonare qualsiasi istanza di oggetto mantenuta all'interno dell'oggetto se è necessario: per impostazione predefinita i puntatori verrebbero copiati ma il nuovo oggetto avrebbe effettivamente le stesse istanze degli oggetti figlio. – DaveRandom
@DaveRandom: Puoi spiegare un po 'più semplice :) potrebbe essere un collegamento o qualsiasi altra cosa che spieghi meglio questo. ho già fatto il mio googling – zamil
Considera un oggetto di classe 'A' con una proprietà' $ innerB', che contiene un'istanza della classe 'B'. Quando clonate l'istanza di 'A', il nuovo oggetto avrà la stessa istanza di' B'. Usando il clone, potresti fare $ this-> innerB = clone $ this-> innerB; '- così otterrai anche una nuova istanza di' B' per il nuovo oggetto. Considera [questo] (http://codepad.viper-7.com/Ngssxa) contro [questo] (http://codepad.viper-7.com/51YWiC). – DaveRandom