2011-09-15 25 views
5

c'è un modo in php
di dichiarare una classe utilizzando un
ossia la variabile (questo non funziona - ma la sua qui per dare un'idea di mia intenzione):come dichiarare una classe PHP con un nome di variabile

$myname = "the_class"; 
class $myname { 
... 
} 

ho anche provato:

define("MYNAME","the_class"); 
class MYNAME{ 
... 
} 

e ho provato:

$myname = "the_class"; 
class $$myname { 
... 
} 

questo realmente non aiutano:
http://php.net/manual/en/language.variables.scope.php

né fa questo:
http://us3.php.net/manual/en/keyword.class.php

grazie molto per il vostro aiuto

+12

Perché mai vorresti farlo? – NullUserException

+0

forse se ci hai detto cosa intendi fare con esso, potremmo trovare un modo migliore per raggiungere il tuo obiettivo finale. Non riesco a immaginare un motivo per cui sarebbe necessario ... – Dan

+0

Sembra che tu stia definendo $ myname come una stringa, non una classe. Una variabile può puntare a due oggetti? Questo è come una funzione (matematica) 1x -> 2ys –

risposta

7

Certo, usare php per scrivere in un file con il nome che si desidera , quindi richiede quel file. Puoi anche utilizzare eval, ad es. qualcosa come: eval("class $myname { ... };");

Per i casi più complicati, utilizzare una libreria come Zend CodeGenerator (esempio here).

0

Si prega di non aumentare/diminuire questa risposta o contrassegnarla come risposta.

Eugen Rieck's answer è il migliore, ma è stato sepolto nei commenti.

The answer he linked to mostra come utilizzare class_alias() per denominare una classe in una definizione. Ciò è utile se si sta scrivendo una classe di libreria e si desidera consentire all'utente di nominarlo come preferisce, ad esempio impostando una definizione in un file di configurazione.

Quindi, se si sta scrivendo una libreria contenente MyLibraryClass, è possibile consentire all'utente di assegnarlo a qualcosa come LC per concisione in modo che possano scrivere LC :: someFunction() o LC-> someFunction invece di dover scrivere l'intera cosa su.

Problemi correlati