之前陆续介绍了PHP 5.3的一些新特性,正好上周看到ZendCon关于5.3的ppt,介绍的更为详细,那么这里做个归总或者说翻译:) Namespaces php 5.3最大的改动,毫无疑问就是Namespaces(此前有一篇相关的PHP Namespaces FAQ)。这给php开发人员带来的好处不少,广为人们所诟病的函数命名问题也得到了解决。 代码更清晰 5.3之前常见的代码,需要自定义前缀区分函数和类名 CODE: function MY_wrapper() {} 使用名称空间之后,代码看上去更加clean。 CODE: namespace MY; 一个文件中定义了多个namespace 如果一个文件中定义了多个namespace,应该怎样处理? CODE: namespace LIB; 以上代码输出为: CODE: string(18) "LIB_EXTRA::MScrypt" php是解释执行的语言,以上结果合情合理。 namespace的优先级 namespace中定义的函数,类和常量优先,其次才是全局的。 CODE: namespace foo; namespace和autoload的友情 autoload会根据namespace名称以及class名称来解析类文件位置 仅当namespace和全局范围都没找到class定义的情况下,autoload才会被触发 在namespace中定义的__autoload不会被自动调用 CODE: function __autoload($var) { var_dump($var); } // LIB::foo namespace一些辅料 CODE: namespace really::long::pointlessly::verbose::ns; 注:这里的内容节选自pdf Introduction to PHP 5.3 Slides,后文不再复述。 (责任编辑:admin) |