ホームページ  >  記事  >  バックエンド開発  >  PHP でのトレイトの使用方法の詳細な紹介

PHP でのトレイトの使用方法の詳細な紹介

angryTom
angryTomオリジナル
2019-07-16 10:48:122665ブラウズ

この記事は主にPHPでのトレイトの使い方を紹介したもので、個人的にとても良いと思ったので参考にさせていただきます。ぜひ一緒に見に来てください。本文は以下から始まります。

簡単に言うと、trait キーワードは、基本クラスの属性とメソッドを統合したいが、同時に必要な クラスの問題を解決するために PHP で使用されます。他の基本クラスのメソッドを持つため、特性は通常 use と組み合わせて使用​​されます。以下のサンプル コードを参照してください。

<?php
    header("Content-type:text/html;charset=utf-8");
    trait Drive {                      //使用trait 创建一个基类
    public $carName = &#39;trait&#39;;         //定义一个变量
    public function driving() {        //定义一个方法
    echo "driving {$this->carName}<br>";
        }
    }
    class Person {                    //创建一个基类
        public function eat() {         //定义一个方法
            echo "eat<br>";
            }
    }
    class Student extends Person {    //创建一个子类继承Person类
        use Drive;                      //使用trait定义的类Drive
        public function study() {        //定义一个方法
            echo "study<br>";
            }
    }
    $student = new Student();     //创建对象
    $student->study();            //调用自己定义的方法
    $student->eat();              //调用父类方法
    $student->driving();          //调用trait定义的类Drive的方法
?>

実行効果図を図に示します。

PHP でのトレイトの使用方法の詳細な紹介

上記の例では、Student クラスは次の内容を継承します。人、eat メソッドを使用し、Drive を組み合わせることで、運転方法と属性 carName が得られます。

同じ名前のプロパティまたはメソッドが Traitbase class、および this class に存在する場合、最終的にどれがどこにありますか?

<?php 
    header("Content-type:text/html;charset=utf-8");
        trait Drive {                  //使用trait定义一个类 
        public function hello() {    //定义一个方法
            echo "我是trait类的方法hello()<br>";
        }
        public function driving() {
            echo "我是trait类的方法driving()<br>"; //定义一个方法
        }
    }
    class Person {                //创建父类
        public function hello() {    //定义一个方法
            echo "我是父类的方法hello()<br>";
        }
        public function driving() {      //定义一个方法
            echo "我是父类的方法driving()<br>";
        }
    }
    class Student extends Person {         //创建子类继承Person类
        use Drive;                           //使用trait定义的类Drive
        public function hello() {             //定义一个方法
            echo "我是子类的方法hello()<br>";
        }
      }
    $student = new Student();            //创建对象
    $student->hello();                    //调用hello方法
    $student->driving();                  //调用deiving方法
?>

実行中の効果を図に示します

PHP でのトレイトの使用方法の詳細な紹介したがって、メソッドまたは属性が同じ名前を持つ場合、現在のクラス will特性をオーバーライドするメソッド、この例では、学生の hello() メソッドが特性の hello() メソッドをオーバーライドします。 特性 メソッドは、基本クラスの methods をオーバーライドします。この例では、トレイトの Driving() メソッドが Person クラスの Driving() メソッドをオーバーライドします。

php についてさらに詳しく知りたい場合は、Web サイトの php モジュール にアクセスすると、さらに興味深い知識が得られます。

以上がPHP でのトレイトの使用方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。