20 August 2015

最近发生了好多好多的事情,团队调整,家庭意外,突然间感觉整个人都变得空虚,后头看看这么长时间的从业生涯,貌似有点不配称作PHP工程师了,PHP还停留在5.2的那个世纪(这个公司内部系统比较坑爹,一直胁迫用了N年的5.2.10),趁着夜晚的空闲时间,抓紧机会补补,刚刚看到PHP5.4的新特性trait,感觉为PHP增添了不少高端色彩,至少PHP一直在为程序员的效率、质量在努力着做出自己的贡献,造福我等码农!

###什么是Trait? 问题一:还记得之前自己是怎么提高代码复用性的么?
抽象,封装,继承; 前两个思想在trait内仍然没有改变,还是需要我们运转我们聪明的大脑去提炼我们的设计,抽象封装可复用的代码及逻辑

问题二:PHP如何实现多继承?
Oh,好问题,没办法;不是绝对的没有办法,可以用类成员变量去模拟实现,太费劲!让trait来帮你解决这个问题

<?php
trait Person {
	public $eyes;
	public function say() {
		echo 'Hello';
	}
}

trait Computer {
	public $mouse;
	public function coding() {
		echo 'World';
	}
}

class Programmer {
	use Person, Computer;
}

$objProgrammer = new Programmer();
$objProgrammer->say();
$objProgrammer->coding();

程序输出
Hello World

官方文档:Traits

注意事项:

  • Trait 会覆盖调用类继承的父类方法
  • Trait 无法如 Class 一样使用 new 实例化
  • 单个 Trait 可由多个 Trait 组成
  • 在单个 Class 中,可以使用多个 Trait
  • Trait 支持修饰词(modifiers),例如 final、static、abstract
  • 我们能使用 insteadof 以及 as 操作符解决 Trait 之间的冲突

↑ 以上是剪短的初步理解和思考,后续有更深入的内容继续补充

  • 分享到: