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

angryTom
リリース: 2023-04-07 06:18:01
オリジナル
2687 人が閲覧しました

この記事は主に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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート