我问了下同事!这个特性很少用!尽管我们线上的环境是5.4。嗯,还有一点array()用惯了,[]
似乎用的就少。我还是觉得能用新的就用新的。省力气。
看到trait我立刻想起了iOS的语法——extension
。iOS中经常把处理String
的一类的方法,封装成类扩展。把Array或者Dictionary或者NSObject等等封装重构成分类。这样代码看起来就比较简洁。
swift的extension 写法
extension String {
可以定义属性
定义方法
}
trait 我想,也能如此的使用。比如:专门验证字符的我们封装成一个trait。这样在类里面使用。就方便了很多。等等。
<?php
trait Regx {
public function checkAge($a) {
echo __FUNCTION__;
echo "检测age<br/>";
return is_int($a);
}
}
class Person {
use Regx;
public $name;
public $age;
public $mobile;
public function __construct() {
echo "初始化了<br>";
}
public function addAge($age) {
echo "添加年龄<br>";
if ($this->checkAge($age)) {
$this->age = $age;
} else {
echo("要的是整数");
}
}
public function __get($name) {
echo "调用了get-{$this->name}";
return $this->name;
}
}
$p = new Person();
echo $p->addAge("12");
echo $p->age;
echo "<hr>";
echo $p->addAge(12);
echo $p->age;
参考资料:
- 《PHP中的Traits详解》http://tabalt.net/blog/php-traits/