Вы можете прекрасно использовать синтаксис PHP 5.2 в своем исходном коде и комбинировать его с Composer, даже с автозагрузкой Composer PSR-0. Composer не применяет никаких правил, касающихся версии PHP.
Единственное, что вы не можете обойти, - это то, что сам Composer требует PHP 5.3.2 для запуска. Но все остальное зависит от вас.
Более подробно, единственный вариант для «классов с пространством имен» в PHP 5.2 - это использовать теперь страшный вариант Under_Score_Class_Name
, который может быть автоматически загружен с PSR-0. Вам всегда нужно будет использовать полное имя класса (use
, а правильные пространства имен позволят вам использовать более короткие имена). Этот пример имени класса должен находиться по пути /Under/Score/Class/Name.php
и будет автоматически загружен с "autoload": {"psr-0": {"Under": "/"}}
. У вас нет возможности сократить этот путь с помощью PSR-0 (одна из причин, по которой PSR-4 был изобретен), он всегда должен содержать каждое слово между подчеркиваниями в качестве уровня папки, начиная с первого слова. Единственное, что вы можете изменить, это то, что Composer не требует использования папки в главном каталоге библиотеки. Вы можете использовать путь src/Under/Score/Class/Name.php
и выполнить автозагрузку с "psr-0": {"Under_": "src/"}
.
Запуск Composer с версией PHP 5.3.2 или выше, вероятно, сводится к а) его установке, а затем б) явному указанию на эту версию, когдазапуск Composer, например /usr/local/bin/php7.2.23/php composer.phar install
.
. Если вы не хотите использовать длинные пути, допускается просто использовать имена классов в корневом пространстве имен - обратите внимание, однако, что они не должны дублировать существующие имена классов из самого PHP,Без префикса общего имени класса, такого как Under_
из приведенного выше примера, ваша автозагрузка может быть "psr-0": {"": "src/"}
. Однако обратите внимание, что это говорит автозагрузчику Composer, что каждый класс может быть найден в вашей библиотеке. Composer будет отслеживать, где он что-то нашел, и больше не будет пытаться повторить это, но это все равно повлияет на производительность. Поэтому лучше использовать общий префикс.