Valutazione degli spazi dei nomi PHP

11

Sono nella fase di pre-release di un progetto PHP open-source, che spero venga usato da altri sviluppatori nei loro progetti. Attualmente il progetto non supporta gli spazi dei nomi e sto cercando di valutare se utilizzare gli spazi dei nomi o la convenzione di denominazione PEAR di Dir_Subdir_Class, che sembra avere tutti gli stessi vantaggi tecnici senza alcuni degli svantaggi. Per essere onesti, non è una scelta facile.

Alcuni punti di considerazione rispetto agli spazi dei nomi:

  • Uno dei modi in cui il mio progetto sta cercando di differenziarsi fornendo un'API più semplice rispetto ad altri progetti simili. Poiché gli spazi dei nomi sono nuovi e anche perché sono più complicati della convenzione di denominazione PEAR, l'introduzione nella base di codice renderà il mio progetto meno semplice da utilizzare. Implementandoli, perdo una certa differenziazione in termini di facilità d'uso.
  • Anche se vedo alcuni vantaggi per gli spazi dei nomi, non sembrano risolvere un problema che deve essere risolto in un moderno prodotto PHP che utilizza la convenzione di denominazione PEAR. I conflitti di denominazione durante l'utilizzo del mio progetto dovrebbero essere minimi se non inesistenti.
  • Questo articolo mi dà una pausa nell'adottare spazi dei nomi in quanto la loro implementazione è stata meno che stellare.
  • Sono anche riluttante a saltare su un carro che potrebbe non andare da nessuna parte. Poiché gli spazi dei nomi sono una nuova funzionalità di PHP, non sono ancora convinto che diventeranno standard.
  • Compatibilità. Quasi tutto il codice PHP che sia mai stato scritto non utilizza gli spazi dei nomi in quanto è una nuova funzionalità. Altre librerie sarebbero incompatibili senza conversione.

Alcuni punti per l'utilizzo degli spazi dei nomi:

  • Perception. Se gli spazi dei nomi diventassero standard e una best practice, il mio progetto potrebbe essere rapidamente visto come poco professionale e obsoleto senza di essi.
  • Concorso. Mentre alcuni progetti PHP in competizione stanno iniziando a utilizzare gli spazi dei nomi nelle loro ultime versioni, molti devono ancora fare il salto. Fare così ora potrebbe dare al mio progetto un vantaggio su altri progetti.
  • Il lavoro futuro sarebbe più facile se avessi fatto il passaggio ora prima che il progetto diventasse pubblico piuttosto che dopo, dove dovrei sostenere due versioni di esso per un po '.
  • Voglio supportare le best practice e se i namespace diventano una best practice per PHP, il mio progetto dovrebbe farne uso.

Da quello che posso dire, devi scegliere in un modo o nell'altro; non puoi fare entrambe le cose. Ci sono dei punti che non ho considerato? Ci sono segni oggettivi (no flamewars, per favore) che puntano verso o contro lo spazio dei nomi diventando lo standard professionale per PHP? Gradirei qualsiasi intuizione o risorsa che saresti disposto a condividere in quanto ho bisogno di prendere presto una decisione.

    
posta VirtuosiMedia 09.11.2011 - 02:57
fonte

1 risposta

5

Due segni che gli spazi dei nomi in PHP sono qui per restare:

  1. Lo schema di denominazione PEAR è stato abbandonato a favore degli spazi dei nomi in PEAR2 .
  2. Uno degli obiettivi dichiarati di Zend Framework 2.0 è essere un esempio dell'uso di PHP 5.3 , utilizzando in modo completo namespace, tra le altre cose. Considero questo come una strong indicazione del fatto che Zend è pienamente impegnata nello spazio dei nomi e continuerà a supportarli e ad evolversi (speriamo in meglio).

Sono pienamente d'accordo con te sul fatto che l'attuale implementazione dei namespace sia carente, per non dire altro, ma i tuoi argomenti contro il loro utilizzo non sono così solidi. Anche nella loro forma attuale, gli spazi dei nomi prevedono:

  • Organizzazione del codice migliore,
  • Evitare collisioni di nomi,
  • Contesto per classi, funzioni e costanti.

Tieni presente che la maggior parte degli argomenti rispetto agli spazi dei nomi PHP è rispetto alle implementazioni in altri linguaggi e non rispetto ai loro meriti effettivi come funzionalità.

    
risposta data 09.11.2011 - 08:13
fonte

Leggi altre domande sui tag