Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Verwendung von Merkmalen in PHP

Detaillierte Erläuterung der Verwendung von Merkmalen in PHP

高洛峰
高洛峰Original
2016-10-17 10:41:311094Durchsuche

Traits in PHP 5.4 ist eine neu eingeführte Funktion. Ich weiß wirklich nicht, wie ich sie genau ins Chinesische übersetzen soll. Sein eigentlicher Zweck besteht darin, in manchen Situationen Mehrfachvererbung zu verwenden, aber PHP verfügt nicht über Mehrfachvererbung, also wurde so etwas erfunden.

Traits können als eine Reihe von Methoden verstanden werden, die von verschiedenen Klassen aufgerufen werden können, aber Traits sind keine Klassen! Kann nicht instanziiert werden. Schauen wir uns zunächst die Syntax anhand eines Beispiels an:

<?php
trait myTrait{
    function traitMethod1(){}
    function traitMethod2(){}
}
//然后是调用这个traits,语法为:
class myClass{
    use myTrait;
}
//这样就可以通过use myTraits,调用Traits中的方法了,比如:
$obj = new myClass();
$obj-> traitMethod1 ();
$obj-> traitMethod2 ();

Als nächstes untersuchen wir, warum Merkmale verwendet werden. Es gibt beispielsweise zwei Klassen, nämlich „business“ (Geschäftsperson) und „Individuum“ (Einzelperson). Der herkömmliche Ansatz besteht darin, eine übergeordnete Klasse so zu abstrahieren, dass beide Klassen gemeinsame Merkmale haben, z. B. „Client“, und die Zugriffsattribute „Adresse“, „Geschäft“ und „Person“ in der Client-Klasse so festzulegen, dass sie diese erben, wie im Folgenden gezeigt Code:

// Class Client  
class Client  {  
    private $address;  
    public getAddress() {  
        return $this->address;  
    }       
    public setAddress($address) {  
        $this->address = $address;    
    }  
}  
class Business extends Client{  
    //这里可以使用address属性  
}  
// Class Individual  
class Individual extends Client{  
//这里可以使用address属性  
}

Aber was ist, wenn es eine andere Klasse namens order gibt, die auf dasselbe Adressattribut zugreifen muss? Die Auftragsklasse kann die Client-Klasse nicht erben, da dies nicht den Prinzipien von OOP entspricht. Zu diesem Zeitpunkt sind Merkmale hilfreich. Sie können ein Merkmal definieren, um diese öffentlichen Eigenschaften zu definieren.

// Trait Address
trait Address{
    private $address;
    public getAddress() {
        eturn $this->address;
    }
    public setAddress($address) {
        $this->address = $address;
    }
}
// Class Business
class Business{
    use Address;
    // 这里可以使用address属性
}
// Class Individual
class Individual{
    use Address;
    //这里可以使用address属性
}
// Class Order
class Order{
    use Address;
    //这里可以使用address属性
}


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