Конкатенатор php файлов в стиле препроцессора си. Есть такой?
Попалась мне безумная и беспощадная задача написать определенную библиотеку, но вот заказчик упорно хочет получить её одним файлом без зависимостей.
Начал я её такой писать и после 300 строк уже стало грустно становиться.
Есть ли в природе инструмент, который рекурсивно обработает include/include_once/require/require_once инструкции и соберет все в один файл не вырезав комментарии из кода?
Если при этом будет еще и с композером дружить вообще хорошо, но в такие сказки уже не верится.
Хомон, Нуу... я в принципе и сам вижу, когда такие решения могут быть обоснованы, пусть и очень редко.
Заказчик сам разработчик, видимо так нужно.
Вообще у меня уже появилась идея, что можно написать свой автолоадер, который соберет все файлы в один, только нужно корректно обработать <?
Ибо закрывающий ?> я не пишу.
Но пока лень велосипедить, наверняка есть готовый инструмент.
У Symfony раньше использовался компонент class-loader для этого в частности ClassCollectionLoader::inline
Сейчас данный компонент является deprecated, т.к. его использование нецелесообразно
Александр Таратин, afair так очень любят делать заказчики на фрилансе, кто заказывает у разных разработчиков разные куски кода - потом они просто инклудят это к себе, заменяя реквизиты базы - и все.
Поддерживать это очевидно нереально, но им и не нужно.
BI0R0B0T, Решение с ClassCollectionLoader::inline похоже сломано.
-Оно не удаляет <?
-Ломает выравнивание
-Удаляет комментарии
-Не до конца рекурсивно подхватывает все подгружаемые классы
Сам не пробовал, но может быть посмотреть в сторону php.net/manual/ru/book.phar.php ?
Там даже в комментах есть кусок кода который собирает phar из папки с исходниками.
Решил патчем psr4 автолоадера из симфони.
Запонимаю какакие файлы были запрошены и просто склеиваю их.
Это проще чем php код парсить, да и разрабатывать так удобнее.