Pergunta

Eu estou preso em um servidor PHP 4, e eu gostaria de começar a mover um projeto antigo legado modernos padrões de projeto, incluindo Dependency Injection. Existem quaisquer quadros de injeção de dependência que irá trabalhar com PHP 4?

Foi útil?

Solução

i encontrados este (gotejamento), mas parece que não foi atualizado em poucos anos.

Outras dicas

A maioria dos quadros de injeção de dependência usar o reflexo para determinar as dependências. Desde PHP4 não tem typehints, você realmente não pode fazer isso. Experimentos têm sido feitos com o uso de arquivos de configuração - Algumas vezes embutidos em comentários no código (muitas vezes chamado de anotações). Enquanto isso funciona, acho que é um pouco desajeitado. Na minha opinião, é melhor usar a natureza dinâmica do PHP para a sua vantagem, do que tentar aplicar soluções de tipagem estática a ela. Você pode obter um longo caminho com as fábricas artesanais. Ver, por exemplo este post sobre como .

Eu não acho que um quadro de injeção de dependência vai realmente trabalhar em PHP por causa da maneira programas orientados a objetos são estruturados na mesma. Primeiro de tudo, não é como C # ou Java em que os binários já estão lá e você apenas tem que encontrar uma maneira de instanciar este objeto e injetá-lo em outro. PHP tem de carregar os arquivos de classe e interpretá-los antes que possa usá-los. Então se você tem hierarquias de herança profundas com PHP eu não acho que é uma boa idéia.

Dado que o PHP é uma linguagem de script, é melhor aproveitá-lo como aquele - uma linguagem de script. O que significa, gostaria apenas de fazer uso de fábrica simples ou métodos construtor de fazer algo semelhante a injeção de dependência. Eu não oneraria-lo com um quadro DI que só irá adicionar ao material o tempo de execução PHP tem de processo para cada solicitação da web (a menos que você faz caching opcode, mas ainda haverá sobrecarga que de não incorridos pelas plataformas web para Java e. INTERNET). Se eu tiver que mudar os objetos que serão injetados em objetos ou como eles são criados, seria uma tarefa simples para apenas editar o script que contém os métodos de fábrica / Construtor. Não há necessidade de recompilar lá de qualquer maneira. Então, eu tenho flexibilidade e tenho uma arquitetura leve que é adequado para a maneira como PHP de fazer as coisas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top