Существует ли платформа внедрения зависимостей для PHP4?

StackOverflow https://stackoverflow.com/questions/131393

Вопрос

Я застрял на сервере PHP 4 и хотел бы начать перенос старого устаревшего проекта на современные шаблоны проектирования, включая внедрение зависимостей.Существуют ли какие-либо платформы внедрения зависимостей, которые будут работать с PHP 4?

Это было полезно?

Решение

я нашел этот (капает), но похоже, что он не обновлялся уже несколько лет.

Другие советы

Большинство фреймворков внедрения зависимостей используют отражение для определения зависимостей.Поскольку в PHP4 нет подсказок, вы не сможете этого сделать.Были проведены эксперименты с использованием файлов конфигурации. Иногда они встроены в комментарии в коде (часто называемые аннотациями).Хотя это работает, я нахожу это немного неуклюжим.На мой взгляд, вам лучше использовать динамическую природу PHP в своих интересах, чем пытаться применить к нему статически типизированные решения.Вы можете пройти долгий путь с помощью фабрик ручной работы.См. например этот пост о том, как.

Я не думаю, что фреймворк внедрения зависимостей действительно будет работать на PHP из-за того, как в нем структурированы объектно-ориентированные программы.Прежде всего, это не C# или Java, где двоичные файлы уже есть, и вам просто нужно найти способ создать экземпляр этого объекта и внедрить его в другой.PHP должен загрузить файлы классов и интерпретировать их, прежде чем он сможет их использовать.Так что если у вас глубокая иерархия наследования в PHP, я не думаю, что это хорошая идея.

Учитывая, что PHP — это язык сценариев, лучше всего использовать его как язык сценариев.Это означает, что я бы просто использовал простые методы фабрики или сборки, чтобы сделать что-то похожее на внедрение зависимостей.Я бы не стал обременять его инфраструктурой DI, которая будет только добавлять к материалам, которые среда выполнения PHP должна обрабатывать для каждого веб-запроса (если только вы не выполняете кэширование кода операции, но все равно будут накладные расходы, которые не несут веб-платформы для Java и . СЕТЬ).Если мне нужно изменить объекты, которые будут внедрены в объекты, или способ их создания, было бы простой задачей просто отредактировать сценарий, содержащий методы фабрики/сборщика.Там все равно перекомпилировать не надо.Итак, у меня есть гибкость и легкая архитектура, подходящая для работы на PHP.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top