пользовательская автозагрузка по умолчанию - PullRequest
0 голосов
/ 04 марта 2012

какой метод автозагрузки быстрее?

    private $_directoriesToLook = array("framework/", "models/", "controllers/");

Пользовательский автозагрузчик:

    private function customAutoloader($class_name)
    {
        if(class_exists($class_name))
            return true;

        foreach($this->_directoriesToLook as $directory)
        {
            $files = scandir($directory);

            if(in_array($class_name.".php", $files))
            {
                require_once($directory.$class_name.".php");
                return true;
            }
        }
        return false;
    }

    spl_autoload_register(array($this, "customAutoloader"));

Автозагрузчик по умолчанию:

set_include_path(get_include_path().PATH_SEPARATOR.implode(PATH_SEPARATOR, $this->_directoriesToLook));
spl_autoload_extensions(".php");  
spl_autoload_register();

Хотя я читал, что по умолчанию один должен быть быстрее, в соответствии с моими тестами выигрывает пользовательский метод. Недостатком метода по умолчанию является то, что все классы должны быть строчными.

1 Ответ

1 голос
/ 04 марта 2012

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

...