我刚刚了解了“惰性加载”设计模式。
过度使用惰性加载来加载所有类并完全忘记include(..)
,这样做是否可行?
这种方法的缺点是什么?
我刚刚了解了“惰性加载”设计模式。
过度使用惰性加载来加载所有类并完全忘记include(..)
,这样做是否可行?
这种方法的缺点是什么?
关于自动加载的几点说明:
相较于一直包含所有文件(特别是文件数量越来越多时),使用自动加载会带来很好的性能提升。
在实现自动加载时,最好使用spl_autoload_register()
而不是__autoload()
。
虽然很多时候当人们谈论PHP中的延迟加载时,他们指的是像下面这样的东西:
class Foo {
protected $bar = null;
public function getBar() {
if ($this->bar == null) {
$this->bar = ExpensiveOperation();
}
return $this->bar;
}
}
只有在实际需要使用属性时才加载它,而不是每次实例化对象时都加载,这可能会带来一些好处。
懒加载器的一个好处是,在脚本执行期间它只会加载实际需要的类文件,可能会节省内存;否则你可能会包括所有的类文件,无论是否需要。根据你的脚本,这可能会有很大的影响。
使用显式包含或者让__autoload()
为您找到类都是可以的,两种方法都可以。
但我不建议混合使用这两种策略。这样include
行就变得多余了。