PHP5.4新特性-解引用实例化
show(); //PHP Parse error: syntax error, unexpected T_OBJECT_OPERATOR
我们只能, 把实例化结果先保存起来, 然后再调用:
$a = new Foo(); $a->show();
关于这个改进, 已经有很多人提出过request, 但是因为实现的问题, 一直没有加入PHP.
这点上, 我解释下, PHP的语法分析系统, 是一个历史悠久的系统, 在这个蛮长的的历史中, 不停的修修补补, 或多或少的会造成一些特定的特性. 而如果要重写, 继耗时, 又耗力, 并且很难做到和现在的完全兼容, 所以我想, 要完全重写, 那也只能是PHP6了(替开发组宣布一下, PHP6目前已经停止开发, 也暂时不会有这种提法)
而, 如果采用修补的方式, 就会引入一个无法解决的移近/归约冲突, 我之前也尝试过实现这个特性, 但是因为遇到这个问题, 所以没有提交..
不过, 随着对这个特性要求的增多, 慢慢的, 大家觉得, 即使多一个移近/归约冲突,,,, 也没啥吧. 嘿嘿, 所以呢:
现在, 这个特性终于在Felipe(Instance and method call/property access)的工作下, 得到了支持, 现在我们就可以书写如下的语法了:
bar() (new $foo())->bar (new $bar->y)->x (new foo)[0]
你也许注意到了, 所有的实例化式都需要用括号括起来, 是的, 这也是因为PHP目前的语法系统, 如果采用不加括号的做法, 那么就会更多的引入一个移近/归约冲突, 当然我相信这个括号也没什么, 起码看起来也更清晰一些.
enjoy!
说到这里, 插个题外话, 我很好奇, C++的语法分析, 那得有多少已知的无法解决的”移近/归约”冲突啊, 有知道的朋友么? 呵呵.
不过, 还是要提醒下: PHP 5.4还处于开发阶段, 在最终release之前, 任何新特性都可能被调整或者更改. 如果大家有任何建议, 也欢迎反馈, 帮助我们使得PHP变得更好.
谢谢
更多更新信息, 请关注: Changelog
建议继续学习:
- Linus:为何对象引用计数必须是原子的 (阅读:11449)
- 字符引用和空白字符 (阅读:3623)
- 通过引用计数解决野指针的问题(C&C++) (阅读:3405)
- 变量引用可提供执行速度 (阅读:2892)
- PHP错误抑制符(@)导致引用传参失败的Bug (阅读:2542)
- 一个想当然造成的错误(函数引用参数的一个问题) (阅读:2389)
- 引用 转发 链式传播 (阅读:1652)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:雪候鸟 来源: 风雪之隅
- 标签: 实例化 引用
- 发布时间:2011-11-13 21:06:21
- [66] Go Reflect 性能
- [66] Oracle MTS模式下 进程地址与会话信
- [65] 如何拿下简短的域名
- [59] IOS安全–浅谈关于IOS加固的几种方法
- [59] android 开发入门
- [59] 图书馆的世界纪录
- [58] 【社会化设计】自我(self)部分――欢迎区
- [53] 视觉调整-设计师 vs. 逻辑
- [47] 界面设计速成
- [47] 读书笔记-壹百度:百度十年千倍的29条法则