阐述
在阅读 laravel 文档的时候看到一个类是以 Trait 声明的。
平时在工作中从来没有用过,于是就去看了下官方文档。原来这个类早在 php5.4.0 就有了,可惜在项目中从来没有用过。
Trait 看上去既像类又像接口,其实都不是,Trait 可以看做类的部分实现,可以混入一个或多个现有的PHP类中,其作用有两个:
- 表明类可以做什么;
- 提供模块化实现;
Trait 是一种代码复用技术,为PHP的单继承限制提供了一套灵活的代码复用机制。
为什么使用 Trait ?
PHP语言使用一种典型的单继承模型,在这种模型中,我们先编写一个通用的根类,实现基本的功能,然后扩展这个根类,创建更具体的子类,直接从父类继承实现。
这叫做继承层次结构,很多编程语言都使用这个模式。
大多数时候这种典型的继承模型能够良好运作,但是如果想让两个无关的PHP类具有类似的行为,应该怎么做呢 ?
Trait 就是为了解决这种问题而诞生的。
Trait 能够把模块化的实现方式注入多个无关的类中,从而提高代码复用。
简单使用
<?php
trait