Thu 26 Oct 2006
热闹的 php internals
Posted by yAnbiN under PHP
[2] Comments
在继“是否要把 Filter 扩展集成到 PHP 5.2”这个问题被热闹讨论一番之后,最近 php internals 又开始热烈讨论起了另一个话题:E_DEPRECATED。
Marcus Boerger 说在经过了至少三个月的讨论与思考以后,他认为有必要在原来的 E_STRICT 之外再增加一个错误报告级别:E_DEPRECATED。这个 E_DEPRECATED 主要用于在用户使用了一些即将在近期 PHP 版本中被移除的某些语言特性时发出警告。这个“近期的 PHP 版本”具体来说就是与当前版本相隔了两个次(Minor)版本或一个主(major)版本。比如说,假如一个PHP 5.2 中的语言特性将要在 PHP 5.4 或者是 PHP 6.0 中被移除,那么当用户在使用这个语言特性时就应该发出这个 E_DEPRECATED 警告。
与此同时,原来的 E_STRICT 也将只负责其余的像“abstract static”这种不严格符合某些标准但用了也不会对 Zend Engine 造成太大麻烦的情况。而 E_NOTICE 和 E_WARNING 呢,也转为只负责那些输入性的错误(input validations)。
这应该说是一个非常好的建议,基本上所有人都赞成了这个建议。但随后 Marcus Boerger 又抛出了两个比较“激进”的建议:
1、舍弃现在的标准配置文件:php.ini,而改用两个新命名的配置文件:专为开发人员准备的 php-develop.ini (E_ALL|E_STRICT|E_DEPRECATED)和 用于产品部署的 php-production.ini (~(E_DEPRECATED|E_NOTICE|E_WARNING)),并且 E_ALL 也不再包含 E_STRICT or E_DEPRECATED 。
2、应该推迟 PHP 5.2 的发布,直到完成以上所述的变化的为止。
这一下就炸了锅了,各路天神纷纷表达了自己的看法:
Zeev Suraski(就是前两天来咱们这里的那位,我怀疑他是在咱们这里发出这个帖子的^_^)赞成增加 E_DEPRECATED 并支持为此而拖延 PHP 5.2 的发布,但反对再另外增加那两个配置文件。他觉得其实这两个并没有什么不同,而且也不觉得在产品部署时禁止 E_WARNING 和 E_NOTICE (可能还有 E_DEPRECATED)有多么好,万一你要是想同时进行一下日志记录呢?
Ilia Alshanetsky(PHP 5系列的 Release Manager)也同意增加一个E_DEPRECATED ,但他除了不赞成再增加两个配置文件外还反对为此而推迟 PHP 5.2 的发布。并且还为此专门另开一帖专门阐述了他的理由:PHP 5.2 并不是 PHP 5.x 的最后一个版本,没有必要把所有新东西都加在这个版本上。而且会导致目前代码的不稳定。况且目前 PHP 5.2 的发布已经推迟很久了,PHP 5.2 修复了大量的安全性方面的BUG,没有一个用户愿意受到这种攻击,推迟发布就是对所有的PHP用户的一种伤害(disservice)。他建议这些改变应该留到 PHP 6.0 中去完成。
Derick Rethans、Wez Furlong 还有 Pierre 等都发表了各自的意见,但大部分分歧都是集中在是否要为此而推迟 PHP 5.2 的发布上。基本上就是“一步到位” vs “步步为营”。
我个人是支持 Ilia Alshanetsky 的观点的,但目前看起来激进派略占上风。好事多磨,看来 PHP 5.2 至少还得等这件事完全确定下来才会发布。:(
我也一直在等5.2, 和6.0啊。白头发渐渐得多起来了。
目前看来 6.0 至少还得一年才能投入使用。5.2 能在 11 月中上旬发布我就很高兴了。5.2在很多方面都进行了改进,尤其是在高负载的情况下。很值得期待~