搜索

2010年8月26日星期四

我不喜欢 Late Static Bindings / PHP 5.3

PHP 5.3 引入了一个新特性,被称之为 Late Static Bindings,具体用法请参见手册,这里我只想谈谈我的感受:

PHP 5.3 试图用给 static 关键字增加一个额外语义的方法,来修正 self 关键字的一个瑕疵:

self 仅代表其自身所在的类,而不是当前调用者所属的类。

从兼容性的角度,引入 static 的新用法是不错的;但是这或许会导致 self 关键字失去其本身的地位:


大多数情况下(Late Static Bindings 特性),我觉得新的 static 用法恐怕会在大多数情况下取代 self 关键字。如果我编写教材,我会写:通常请用 static 代替 self,除非你需要特指引用当前类的情况。

这样我想,我们会在 PHP 中和这个其它 OOP 中被广泛使用的那个 self 说再见了。

我不喜欢这样,真的。

更合理的方案或许应该是把 self 的效果改成现在 static 的效果,然后用某个别的什么符号,例如 &self 特指当前类。不过当然,这样修改的话,现有所有程序都要修改了。唉,我怎么觉得 PHP 越来越丑陋。

没有评论:

发表评论