naming conflict

Ciao a tutti.

Domandone da php newbie. PHP non offre supporto per i namespace (almeno fino alla v.5.2.1). Come posso includere due file senza correre il rischio di conflitto di nomi (di funzioni o classi)?

Tenete presente che lo scenario che ho davanti è un framework in PHP 5.2.1 dove è possibile registrare dei nuovi addon, e quindi includere le relative logiche a tempo di esecuzione.

Avete qualche idea?

Grazie

Alberto

inviato 9 anni fa
adecaro
X 0 X

per i metodi della classe non ci dovrebbero essere problemi perchè sono appartenenti a quella classe

include 'framework1.php';
include 'framework2.php';
$istanza1 = new frmwrk1():
$istanza2 = new frmwrk2();
$istanza1->metodo(); //metodo 
$istanza2->metodo(); //altro metodo , diverso da metodo ( il primo, quello appartenente a frmwrk1 )

non credo che php abbia problemi a gestire metodi di classi differenti con lo stesso nome

per i nomi delle classi invece non so!

:bye:

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

due classi non possono avere lo stesso nome  :dunno:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

lol questo lo sapevo.

ma pensavo ci fosse qualche sorta di stratagemma ( vedi namespaces ) che permettesse di farlo.

ma visto che ci saranno solo da php6, aspettiamo!

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Grazie per le vostre risposte.

PHP5 non offre supporto per i namespace (sigh). Cosa si fa per evitare il naming conflict quando si includono librerie esterne?

Alberto

risposto 9 anni fa
adecaro
X 0 X

si segue qualche convenzione, ad esempio PEAR fa precedere i nomi di tutte le classi con il prefisso PEAR...

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

si segue qualche convenzione, ad esempio PEAR fa precedere i nomi di tutte le classi con il prefisso PEAR...

 :bye:

Inoltre con il nome del pacchetto. Puoi fare in questo modo per esempio indicando che tutti gli addond dovranno avere i nomi formattati come: Addon_NomeClasse

risposto 9 anni fa
GaretJax
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda