Функция PHP __autoload в ООП - PullRequest
       19

Функция PHP __autoload в ООП

1 голос
/ 23 ноября 2011

Должна ли функция __autoload () (PHP) быть автономной или ее можно использовать в классе как публичную / защищенную / приватную функцию?

Я слышал, что это должна быть подставкаи не должна использоваться в классе.Это правда или может быть использовано в классах?

Заранее спасибо!

Ответы [ 3 ]

5 голосов
/ 23 ноября 2011

Вы можете использовать SPL для этого:

class MyAutoloader
{
    public static function register()
    {
        spl_autoload_register(array(new self, 'autoload'));
    }

    public static function autoload($classname)
    {
        // auto load code
    }
}
4 голосов
/ 23 ноября 2011

См. __autoload() документация , которая гласит:

spl_autoload_register() предоставляет более гибкую альтернативу для автозагрузки классов. По этой причине использование __autoload () не рекомендуется и может быть признано устаревшим или удалено в будущем.

Если вам нужен пример использования метода некоторого класса в качестве механизма автозагрузки, см. этот пример .

3 голосов
/ 23 ноября 2011

Какой смысл иметь __autoload () в некотором произвольном классе, который вы создаете?

__ autoload () вызывается, когда вы пытаетесь создать экземпляр объекта из класса, который еще не определен (spl_register_autoload() предпочтительнее, чем __autoload()).

Следовательно, оно должно быть доступно по всему миру.PHP не знает, что класс XYZ содержит функцию с именем __autoload(), которую вы хотите вызвать.

Что вы можете сделать, это создать класс, который обрабатывает автозагрузку, а затем использовать функцию spl_autoload_register(), чтобы получитьКласс призвал к необходимости автозагрузки.

...