Domanda

Sono bloccato su un server PHP 4 e vorrei iniziare a spostare un vecchio progetto legacy in moderni modelli di progettazione, inclusa l'iniezione delle dipendenze. Esistono framework di iniezione di dipendenze che funzioneranno con PHP 4?

È stato utile?

Soluzione

ho trovato questo (gocciolamento), ma sembra che non sia stato aggiornato in alcuni anni.

Altri suggerimenti

La maggior parte dei framework di iniezione delle dipendenze usa la riflessione per determinare le dipendenze. Poiché PHP4 non ha suggerimenti sul tipo, non puoi davvero farlo. Sono stati fatti esperimenti con l'uso dei file di configurazione - Alcune volte incorporati nei commenti nel codice (spesso chiamati annotazioni). Mentre funziona, lo trovo un po 'goffo. Secondo me, stai meglio usando la natura dinamica di PHP a tuo vantaggio, piuttosto che provare ad applicare soluzioni tipicamente statiche ad esso. Puoi fare molta strada con fabbriche artigianali. Vedi ad esempio questo post su come .

Non credo che un framework di iniezione di dipendenza funzionerà davvero su PHP a causa del modo in cui sono strutturati i programmi orientati agli oggetti. Prima di tutto, non è come C # o Java in cui i binari sono già lì e devi solo trovare un modo per creare un'istanza di questo oggetto e iniettarlo in un altro. PHP deve caricare i file di classe e interpretarli prima di poterli utilizzare. Quindi, se hai gerarchie di eredità profonde con PHP, non penso sia una buona idea.

Dato che PHP è un linguaggio di scripting, è meglio sfruttarlo come tale - un linguaggio di scripting. Il che significa che farei semplicemente dei semplici metodi factory o builder per fare qualcosa di simile all'iniezione di dipendenza. Non lo appeserei con un framework DI che aggiungerà solo alle cose che il runtime PHP deve elaborare per ogni richiesta Web (a meno che non si esegua la cache del codice operativo, ma ci sarà comunque un overhead che non è sostenuto dalle piattaforme Web per Java e. NETTO). Se devo cambiare gli oggetti che verranno iniettati negli oggetti o il modo in cui vengono creati, sarebbe semplice modificare lo script che contiene i metodi factory / builder. Non c'è bisogno di ricompilare lì comunque. Quindi ho flessibilità e ho un'architettura leggera adatta al modo di fare PHP.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top