有没有人觉得yii2引入了命名空间后破坏了原来的自动加载机制

粗略的看了一下yii2的 changelog 和指南

需要为每个类,乃至是基础类都指定 namespace 和 use

那些原本能autoload的类都变得啰嗦起来。

再如果

要是用上一些策略模式或者工厂模式什么的话会变得更啰嗦。

小弟思想跟不上时代啦,得去补一补新知识了。

有点搞混了概念…

我以前也觉的namespace 和 use 很烦

每个文件都要搞,现在用久了,习惯就好了

小生以为,这是 PHP 的要求不是 Yii2 的要求。随着PHP项目越来越庞大,很多项目都会引入若干第三方扩展和类库,命名空间变得灰常灰常重要。如果两个包都有Formatter类用于格式化输出,自动加载机制怎么判断哪个该引入,哪个不该?还是直接扔异常了事?Yii的官方扩展都有这么一长串,看看Composer里面的列表更是不得了了。可见这个还是很有用的。

.NET,JAVA,Python等等都有类似机制,这个玩意儿是必然会引入的,拖到5.3,5.4再搞已经很晚了。

如果说这个机制的毛病的话,我觉得是 PHP 的历史包袱太累赘,导致这个引入非常不彻底。举例来说,我们有很多array_shift,array_****的方法,如果完全引入面向对象,应该把他们都放到Array包或者Array类里面,引用的时候直接use \SPL\Array; 然后直接用shift()方法,而不是array_shift。就像原来的Java和python里那样。

等项目变大了就会发现命名空间的好处。。。

原则上namespace会让项目跑的更快吧。