Ленивая загрузка?Лучше этого избежать? - PullRequest
7 голосов
/ 05 января 2011

Я только что прочитал о шаблоне проектирования "отложенной загрузки".

Можно ли чрезмерно использовать отложенную загрузку для загрузки всех классов и полностью забыть о include(..)?
Каковы минусы этого подхода?

Ответы [ 3 ]

6 голосов
/ 05 января 2011

Пара баллов за автозагрузку:

  1. Вы увидите хорошее представление улучшение с помощью автозагрузки против всегда включая все ваши файлы все время (особенно по количеству файлов становится все больше и больше).

  2. При реализации автозагрузки это лучше использовать spl_autoload_register() чем __autoload().

Хотя часто люди говорят о ленивой загрузке в PHP, они говорят о чем-то вроде следующего:

class Foo {
    protected $bar = null;

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

Тогда вы загружаете свойство только тогда, когда оно действительно необходимо использовать, а не каждый раз, когда создаете экземпляр объекта, что потенциально может иметь некоторые хорошие преимущества.

3 голосов
/ 05 января 2011

Одним из преимуществ ленивого загрузчика является то, что он загружает только те файлы классов, которые действительно нужны сценарию в ходе его выполнения, что потенциально экономит память;в противном случае вы можете включить все файлы классов, нужны они или нет.В зависимости от ваших сценариев, это может иметь большое значение.

2 голосов
/ 05 января 2011

Можно использовать явные включения или __autoload() найти ваши классы для вас.В любом случае.

Я бы не советовал смешивать эти две стратегии.include строки были бы ненужными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...