Heim >Backend-Entwicklung >PHP-Tutorial >Ausführliche Erklärung der PHP-Magie-Methode __clone (Codebeispiel)

Ausführliche Erklärung der PHP-Magie-Methode __clone (Codebeispiel)

易达
易达Original
2020-05-28 18:15:402131Durchsuche

Ziele dieses Artikels:

1. Verstehen Sie die Definition der magischen Methode in PHP

2. Verstehen Sie die Verwendungsszenarien der magischen Methode __clone()

3. Beherrschen Sie die Verwendung der magischen Methode __clone()

(1) Verstehen Sie die Definition der magischen Methode in PHP

PHP reserviert alle Klassenmethoden, die mit __ (zwei Unterstriche) beginnen, als magische Methode . Daher wird beim Definieren von Klassenmethoden mit Ausnahme der oben genannten magischen Methoden empfohlen, ihnen kein __ voranzustellen.

(2) Verstehen Sie die Verwendungsszenarien der magischen Methode __clone()

Wenn wir beim Klonen eines Objekts eine spezielle logische Verarbeitung durchführen möchten, können wir es in dieser magischen Methode der Klasse A definieren , diese magische Methode ist __clone, und schreiben Sie dann Ihre eigene spezielle Geschäftslogik hinein

(3) Beherrschen Sie die Verwendung der magischen Methode __clone()

Zusammenfassung:

1 . In PHP ist __clone in der Klasse im folgenden Format definiert: öffentliche Funktion __clone() Beachten Sie hier, dass es 2 __ sein muss, was __clone sein muss, und es muss 0 Parameter annehmen, einen mehr und einen weniger Arbeit

2. Beim Klonen eines Objekts löst das System automatisch die definierte __clone-Methode der Klasse aus, in der sich das Objekt befindet

Jede Zusammenfassung wird durch Übung erhalten Jetzt verwenden wir Üben Sie, um Zusammenfassungen zu demonstrieren, die das Verständnis fördern und jede Zusammenfassung klarer und intuitiver machen können

Fall 1,

Übungsziele:

1 __clone ist in der Klasse im folgenden Format definiert: öffentliche Funktion __clone(). Beachten Sie hier, dass es 2 __ geben muss, die __clone sein müssen, und dass sie 0 Parameter mehr und einen weniger annehmen müssen

Der spezifische Code lautet wie folgt:

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    //魔术方法 
    public  function __clone(){
        echo "自动执行了Animal类中的__clone方法<br/>";
    }
}
$ani = new Animal();
?>

Das laufende Ergebnis ist:

Leer

Es bedeutet, dass kein Fehler gemeldet wird

Als nächstes versuchen wir, Parameter zu dieser __clone-Methode hinzuzufügen und zu sehen, wie das laufende Ergebnis ist:

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    //魔术方法 
    public  function __clone($name){
        echo "自动执行了Animal类中的__clone方法<br/>";
    }
}
$ani = new Animal();
?>

Das laufende Ergebnis ist:

Schwerwiegender Fehler: Methode Animal::__clone () kann in D:E-classclass-codeclassingindex.php in Zeile 11 keine Argumente akzeptieren

Der Fehlermeldung nach zu urteilen, kann diese Methode keine Parameter tragen, daher sollte dies beachtet werden

Fall 2,

Praktische Ziele:

1. Beim Klonen eines Objekts löst das System automatisch die definierte __clone-Methode der Klasse aus, in der sich das Objekt befindet

Der spezifische Code lautet wie folgt:

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    //魔术方法 
    public  function __clone(){
        echo "自动执行了Animal类中的__clone方法<br/>";
    }
}
$ani = new Animal();
$ani2 = clone $ani;

?>

Wir haben festgestellt, dass wir die __clone-Methode nicht manuell aufgerufen haben, das heißt, wir haben $ani->__clone() nicht geschrieben. aber diese Methode wurde trotzdem ausgeführt. Weil wir $ani2 = clone $ani; geschrieben haben, was dem manuellen Kopieren eines $ani-Objekts und dem anschließenden Definieren dieser magischen Methode in dieser Klasse entspricht, ist es wie Magie und wird plötzlich automatisch ausgeführt

Hier muss beachtet werden, dass es zwei Unterstriche gibt, nicht einen, sonst ist es keine magische Methode. Machen wir unten einen weiteren Test

Der spezifische Code lautet wie folgt:

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    //魔术方法 试着少一个_
    public  function _clone(){
        echo "自动执行了Animal类中的__clone方法<br/>";
    }
}
$ani = new Animal();
$ani2 = clone $ani;

?>

Das laufende Ergebnis lautet:

Leer

zeigt an, dass die __clone-Methode nicht automatisch aufgerufen wurde. Denken Sie also daran, dass es mehr oder weniger zwei Unterstriche __ gibt wird nicht funktionieren

Zusammenfassung:

1. In diesem Artikel werden hauptsächlich die spezifischen Verwendungsszenarien der __clone magic-Methode in PHP und die spezifische Implementierungsmethode untersucht

Ich hoffe das Artikel kann Ihnen helfen. Bitte helfen Sie mir, danke! ! !

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung der PHP-Magie-Methode __clone (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn