Задать вопрос

Как использовать autoload.php из composer?

В проекте был автозагрузчик классов

class Loader {

    public static function init() {
        spl_autoload_register( [new self, 'autoload'] );
    }

   public function autoload($className)
    {
        $className = ltrim($className, '\\');
        $fileName  = '';
        $namespace = '';

        if ($lastNsPos = strripos($className, '\\')) {
            $namespace = substr($className, 0, $lastNsPos);
            $className = substr($className, $lastNsPos + 1);
            $fileName  = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
        }

        $fileName .= $className . '.php';


        if ( is_readable( $fileName) ) {
            include $fileName;
        }
    }
}


Сейчас появился композер, и у него так же есть свой autoload.php. Как теперь быть? Объединить их?
  • Вопрос задан
  • 9426 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 2
@novrm
Взято из Composer Cheat Sheet for developers.
Вот вам более расширенный пример:
"autoload": {
        "psr-4": {
            "Application\\": "module/Application/src/",
            "Vendor\\Namespace\\": ""
        },
        "psr-0": {
            "Monolog": "src/",
            "Vendor\\Namespace": ["src/", "lib/"],
            "Pear_Style": "src/",
            "": "src/"
        },
        "classmap": ["src/", "lib/", "Something.php"],
        "files": ["src/MyLibrary/functions.php"]
    },

Кроме того, дабы обновлять эти зависимости при установке новых модулей, в composer.json нужно или прописать:
"config": {
        "optimize-autoloader": true
    },

или вручную вызывать команду для composer:
$ php composer.phar dump-autoload --optimize
Ответ написан
Denormalization
@Denormalization
А зачем свой оставлять?
Если namespace прописанны нормально, и все лежит красиво по папочкам, то просто настраиваем в composer.json namespace и делаем composer dumpautoload. Затем подключаем vendor/autoload.php и пользуемся.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы