【Laravel使用技巧】使用Trait 避免 PHP 的单继承

trait 有什么优势?来看一段代码:写在前面的话:

Trait 是为PHP单继承语言而准备的一种代码复用机制。

Trait与Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。 无法通过 trait 自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个 之间不需要继承。

什么是 Trait ?

其实说通俗一点,就是能把重复的方法拆分到一个文件,通过 use 引入以达到代码复用的目的。那么,我们应该怎么样去拆分我们的代码才是合适的呢?

Trait,译作 “特性”、“特征”、“特点” 。

Trait 有什么优势 ?

trait 有什么优势?来看一段代码:

class User extends Authenticatable

{

use Notifation, TimeAgo;

...

}

这个用户模型类,我们引入了四个特性:通知,时间节点的计算。

我们看到代码的时候一眼便知道当前支持了哪些个特性

另外也封装了变化,如下:

需求变更,要求在 DemoUser(同样继承了这个基类) 中去除通知特性,而 User 类保留这个特性,怎么办?再创建一个基类么?

这就是我理解的 Trait:

它不仅仅是可复用代码段的集合,它应该是一组描述了某个特性的的属性与方法的集合。它的优点再于随意组合,耦合性低,可读性高。类似设计模式中的组合模式。

同时避免了单继承

laravel默认登录注册会默认生成的User,它继承了Authenticatable类,当我们定义一个基础Model类的时候,它并不能继承。

日记本

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

赞赏支持
被以下专题收入,发现更多相似内容