В настоящий момент во многих проектах с богатым наследием код представляет собой смесь из различных подходов, от PHP 3 до PHP 5.
В PHP 3 мы использовали библиотеки функций, файлы подключения к базе данных, файлы переопределения настроек php.ini и так далее.
В PHP 4 и 5 мы создавали классы, именование файлов которых было сильно кастомизировано, от package/class.myclass.inc до Package/MyClass.php.
В эпоху PHP 5 мы получили стандарт PSR-0, описывающий стандарт именования файлов классов PHP для повышения совместимости их автозагрузки.
Код постепенно начал превращаться в не очень приятное месиво из require_once и spl_autoload_register. Прямо скажем, месиво не сильно управляемое и время от времени приводящее к фатальным ошибкам «функция не существует» или «класс не существует» при разработке нового кода.
И вот, внезапно к нам на помощь пришёл менеджер зависимостей Composer (github-репозиторий).
Хочу подчеркнуть, что Composer не является только лишь генератором автозагрузчика. Задачи, которые он выполняет намного более широки и интересны.
Давайте посмотрим, как мы можем применить Composer для генерации автозагрузчика для нашего legacy-кода.
Читать полностью »