What does trait mean in php? A brief introduction to traits in php

不言
Release: 2023-04-04 07:48:02
Original
6616 people have browsed it

The content of this article is about what is trait in php? A brief introduction to traits in php has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

What does trait mean in php? A brief introduction to traits in php

#What is a trait?

Look at the introduction of PHP official website.

Since PHP 5.4.0, PHP implements a method of code reuse called traits.

Trait is a code reuse mechanism prepared for single inheritance languages ​​like PHP. Traits are designed to reduce the limitations of single-inheritance languages ​​and allow developers to freely reuse methods in independent classes within different hierarchies. The semantics of Trait and Class composition define a way to reduce complexity and avoid the typical problems associated with traditional multiple inheritance and Mixin classes.

Trait is similar to Class, but is only designed to combine functionality in a fine-grained and consistent way. Cannot be instantiated through the trait itself. It adds a combination of horizontal features to traditional inheritance; that is, there is no need for inheritance between several Classes in an application.

Example 1

Mobile phones and cars have GPS functions. GPS is used for positioning, so the functions should be unified. Cell phones and cars have basically nothing in common except for GPS functionality, so inheritance cannot be used. As for the interface, I think that when different classes implement the interface, the implementation of the interface may be different, but the function of GPS is for positioning. So use trait instead of class and interface. This is my understanding, I don't know if it is correct.

Definition of gps.php:

Copy after login

Using trait to define a GPS trait for reuse, its keyword is trait. Then reference it in car.php and mobile.php.

Definition of car.php:

class Car {
    use gps;

    public function move() {
        echo 'i can move';
    }
}
Copy after login

Definition of mobile.php:

Copy after login

In car.php and mobile.php, use the use keyword to introduce gps trait, so that the gps() method can be called in car and mobile.

test.php Test:

gps();
echo "\n";
$mobile->gps();
Copy after login

The output results are as follows:

1 i can gps
2 i can gps
Copy after login

Example 2

Introduced another in car A domestically produced GPS.

gpschina.php is defined as follows:

Copy after login

Introduced in car, modify the definition of car.php as follows:

Copy after login

Call test.php again for testing, and then the The error is reported as follows:

1 Fatal error: Trait method gps has not been applied, because there are collisions with other trait methods on Car in Car.php on line 4
Copy after login

Because in the introduced traits, gps and gpschina each have a gps, and when using $car->gps() directly, it is impossible to determine which gps() method of gps is used. , still using the gps() method of gpschina, so an error was reported. In this case, we need to identify one. Modify the car.php file.

Copy after login

In this way, the GpsChina::gps method is used to replace the Gps method, and then call test.php to check.

1 i can chinae gps
2 i can gps
Copy after login

In this way, the gps() method in gpschina is called after $car->gps().

Example 3

What if there is a gps() method in the Car class itself? Modify the Car class.

Copy after login

Call test.php to view the results:

1 car::gps
2 i can gps
Copy after login

It can be seen that the gps() method of the Car class itself is called.

If in a class, the method inherited from the parent class, the use method to introduce the trait and the method of the class itself have the same name, the method of the own class will be called first. If there is no method of the own class, the use method to introduce the trait will be called. method, if the first two are not available, then the method inherited from the parent class is called.

Related recommendations:

What is the meaning of trait in php?

What is Trait? Sharing the declaration and usage skills of Trait in php

The above is the detailed content of What does trait mean in php? A brief introduction to traits in php. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!