懒加载?避免它更好吗?

时间:2011-01-04 23:42:50

标签: php design-patterns lazy-loading

我刚刚读到了关于“延迟加载”设计模式的内容。

是否可以过度使用延迟加载来加载所有类并完全忘记include(..)
这种方法的缺点是什么?

3 个答案:

答案 0 :(得分:6)

关于自动加载的几点:

  1. 你会看到一个不错的表现 通过使用自动加载来改进 与总是包括你的所有 文件一直在 (特别是作为文件的数量 越来越大了。

  2. 实施自动加载时,它是 更好用 spl_autoload_register()比。{ __autoload()

  3. 虽然很多时候人们谈论PHP中的延迟加载,但他们谈论的内容如下:

    class Foo {
        protected $bar = null;
    
        public function getBar() {
            if ($this->bar == null) {
                $this->bar = ExpensiveOperation();
            }
            return $this->bar;
        }
    }
    

    然后,您只在实际需要使用时加载一个属性,而不是每次实例化该对象时都可以获得一些好的好处。

答案 1 :(得分:3)

延迟加载器的一个好处是它只加载脚本在执行过程中实际需要的类文件,可能会节省内存;否则你可能包括所有类文件,无论它们是否需要。根据您的脚本,这可能会产生很大的不同。

答案 2 :(得分:2)

可以使用显式包含,或让__autoload()为您找到您的课程。无论哪种方式。

但是,我不建议混合使用这两种策略。 <{1}}行是不必要的。