PHPでのトレイトの使い方を詳しく解説

高洛峰
リリース: 2016-10-17 10:41:31
オリジナル
1092 人が閲覧しました

PHP 5.4 の Traits は新しく導入された機能ですが、中国語で正確に翻訳する方法がわかりません。その実際の目的は、場合によっては多重継承を使用することですが、PHP には多重継承がないため、このようなものが考案されました。

特性は、さまざまなクラスから呼び出すことができるメソッドのセットとして理解できますが、特性はクラスではありません。インスタンス化できません。最初に構文を見てみましょう:

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

次に、特性を使用する理由を見てみましょう。たとえば、ビジネスと個人という 2 つのクラスがあり、どちらも address 属性を持っています。従来のアプローチは を抽象化することです。

// 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属性  
}
ログイン後にコピー

// 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属性
}
ログイン後にコピー


rrreee

🎜rrreee🎜 🎜rrreee🎜 ただし、アクセスする必要がある order というクラスがある場合同じアドレス属性です。これは OOP の原則に準拠していないため、オーダー クラスはクライアント クラスを継承できません。このとき、特性を定義してこれらのパブリック プロパティを定義できます。 🎜りー🎜🎜🎜
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート