2010-04-08 9 views
6

Ho un numero significativo di librerie di oggetti scritte per PHP 5.2.5 e sto cercando di valutare i vantaggi dell'installazione successiva per gli spazi dei nomi. Al momento non ho dubbi sulla versione del server PHP, dal momento che tutte le macchine rilevanti sono sotto il mio controllo, quindi non sono preoccupato della compatibilità con le versioni precedenti. Per quanto riguarda la struttura delle librerie, utilizzo la stessa convenzione di Zend Framework, (Library_Module_Class_Name ad esempio), pertanto attualmente non ho conflitti di denominazione interni alle librerie. Prevedo di spostare le parti Libreria e Modulo di quei nomi di classe in namespace.Buoni motivi per migrare le librerie PHP negli spazi dei nomi

Detto questo, se il codice è già stato scritto, c'è qualche buona ragione per passare ai namespace?

Grazie, Joe

+1

Bene, * se * si desidera eseguire la migrazione e il codice segue la convenzione di denominazione ZF, dai un'occhiata ai loro strumenti che eseguono la conversione automaticamente: http://blog.calevans.com/2010/03/27/zends-new-namespace-converter/ – Gordon

risposta

5

Se stai cercando motivi tecnici, non penso ci sia nulla che giustifichi il costo di un grande spostamento di codice. Per quanto ne so, i namespace non conferiscono alcun tipo di vantaggio tecnico o di prestazioni. È più facile scrivere funzioni di autoloading decenti per un insieme ben strutturato di codice PHP con nomi diversi, ma a parte questo, non posso pensare a nulla che possa essere una ragione decisiva per avviare la conversione. Se non altro, c'è probabilmente un po 'di overhead per la risoluzione dello spazio dei nomi (i benchmark sarebbero facili da vedere, ma sono sicuro che è una differenza trascurabile).

Detto questo, ho recentemente iniziato ad aggiornare un vecchio set di codice per utilizzare gli spazi dei nomi e mi sto godendo la capacità organizzativa che fornisce. Il codice ha una tendenza ad essere un po 'più prolisso, ma ho passato IDE a Netbeans 6.8 all'inizio dell'aggiornamento, e il completamento automatico si prende cura della tediosità dell'importazione e dei riferimenti ai namespace. Il supporto per lo spazio dei nomi mi ha colpito, in realtà. Ha reso l'intero progetto abbastanza facile, e in realtà, oserei dire, divertente.

+0

Quindi il namespace ha effettivamente reso il tuo codice * più * dettagliato? È solo questione di "usare X" o qualcos'altro? Puoi darmi qualche dettaglio in più su questo? Grazie! –

+0

Oh, certo. Non ho mai usato uno schema di denominazione in stile Zend, quindi probabilmente è una parte importante di questo. Avevo una complessa funzione di autocaricamento che avrebbe risolto i percorsi dei file in base allo schema di denominazione, ma non era tutto sottolineature. Così ora invece di '$ x = new Person()', sto facendo cose come '$ x = new \ Package \ People \ Person()' (esempio forzato). Solo un po 'più difficile leggere a volte, ma mi ci sto abituando. Netbeans 6.8 riempirà automaticamente gli spazi dei nomi durante la digitazione, quindi se inizio a digitare 'new Pers ...' lo capisce. Creerà anche le dichiarazioni "use" in alto anche per te, quindi mi piace. – zombat

1

Sì, l'oggetto è un oggetto non è un Namespace_Prepended_To_An_Object. Non preferiresti lavorare con un Controller piuttosto che con un Zend_Controller? Quest'ultimo sembra ridicolo.

+2

Mi sembra che questa non sia una risposta alla domanda .... – mattbasta

+2

Questo è il punto di namespace in primo luogo. – blockhead