Home  >  Article  >  Backend Development  >  Detailed introduction to the use of traits in PHP

Detailed introduction to the use of traits in PHP

angryTom
angryTomOriginal
2019-07-16 10:48:122689browse

This article mainly introduces how to use traits in PHP. I personally think it is quite good. Now I will share it with you and give it as a reference. Come and have a look together. The text begins below.

To put it simply, the trait keyword is used in PHP to solve the problem of a class that wants to integrate the attributes and methods of a base class, but also wants to have methods of other base classes, and trait is generally used in conjunction with use. Please look at the sample code below

<?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的方法
?>

The running effect diagram is shown in the figure

Detailed introduction to the use of traits in PHP

In the above example, the Student class inherits Person, with With the eat method, and by combining Drive, we have the driving method and the attribute carName.

If a property or method with the same name exists in Trait, base class and this class, which one will eventually be retained? Where is one?

<?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方法
?>

The running effect is shown in the figure

Detailed introduction to the use of traits in PHPTherefore, it is concluded that when the method or attribute has the same name, The method in the current class willMethods to override trait, in this example, the hello() method of student overrides the hello() method in trait. The trait methods override the methods in the base class. In this example, the trait's driving() method overrides the driving() method in the Person class.

If you want to know more about php, you can go to the php module of the website to learn more interesting knowledge.

The above is the detailed content of Detailed introduction to the use of traits in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn