今天在一个php类中突然看到了use namespace 之前没有看过这个东西,特地搜了一下,写下这篇文章以防忘记。“自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。
Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用方法集。Traits 和类组合的语义是定义了一种方式来减少复杂性,避免传统多继承和混入类(Mixin)相关的典型问题。
Trait 和一个类相似,但仅仅旨在用细粒度和一致的方式来组合功能。Trait 不能通过它自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用类的成员不需要继承。”
通常官方的说法总是让人不知所云,还好提供了几个例子,相当的简单命了。
<?php
class Base {
public function sayHello() {
echo 'Hello ';
}
}
trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
class MyHelloWorld extends Base {
use SayWorld;
}
$o = new MyHelloWorld();
$o->sayHello();
?>
以上的例子输出 ‘hello world’,你看懂了吗?
参考链接 http://php.net/manual/zh/language.oop5.traits.php
结束语
本文有任何错误,或有任何疑问,欢迎留言说明。
网友最新评论