PHP5.4的新特性Traits language construct的看法
时间:2011-07-07
来源:互联网
在PHP中使用这种语言特性是很糟糕的.
trait容易引起环形依赖, 甚至更复杂的依赖, 以https://wiki.php.net/rfc/traits中的例子来说:
<?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(); // echos Hello World!
?>
使用SayWorld时, 必需要有sayHello()方法才行, 也就是依赖于MyHelloWorld, 这个例子更大的问题是, 还要求MyHelloWorld的父类中有实现sayHello()才行.
开发者使用SayWorld太纠结了.
虽然还没最终发布, 但我觉得这个特性还需要再慎重一些.
(也有可能在正式版中会被去掉, 当时在正式发布5.0时, 就去掉了很多测试版中的功能, 包括命名空间等等)
trait容易引起环形依赖, 甚至更复杂的依赖, 以https://wiki.php.net/rfc/traits中的例子来说:
<?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(); // echos Hello World!
?>
使用SayWorld时, 必需要有sayHello()方法才行, 也就是依赖于MyHelloWorld, 这个例子更大的问题是, 还要求MyHelloWorld的父类中有实现sayHello()才行.
开发者使用SayWorld太纠结了.
虽然还没最终发布, 但我觉得这个特性还需要再慎重一些.
(也有可能在正式版中会被去掉, 当时在正式发布5.0时, 就去掉了很多测试版中的功能, 包括命名空间等等)
作者: programmerhuang 发布时间: 2011-07-07
MyHelloWorld 继承 Base 再引入空间SayWorld , SayWorld 中再实例 Base ?
php也适合玩桥接?
php也适合玩桥接?
作者: spser 发布时间: 2011-07-07
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28