2011-05-08 17 views
5

Piuttosto semplice; Ho letto i documenti ma forse sono un po 'confuso dalla spiegazione.Analisi stringa variabile statica in PHP

class Test{ 
    public static $var = 'world'; 
} 

echo "hello {Test::$var}"; // only parses $var in current scope, which is empty 

C'è un modo per ottenere la funzionalità desiderata qui? Sto iniziando a indovinare no, poiché ho provato un numero di permutazioni senza successo.

Chiarimento: Sto cercando di ottenere questo risultato con l'analisi delle variabili di PHP, non la concatenazione. Ovviamente farò ricorso alla concatenazione se il metodo desiderato non è possibile, anche se spero che lo sia.

risposta

8

analisi variabile in phps stringhe doppia citato funziona solo per i "espressioni variabili". E questi devono sempre iniziare con la sequenza di byte {$. Il vostro riferimento ad un identificatore statica però inizia con {T hencewhy PHP analizza verso la prossima $ nei vostri doppi apici e ignora Test::

è necessario utilizzare alcuni trucchi lì. O utilizzare una funzione NOP involucro:

$html = "htmlentities"; 
print "Hello {$html(Test::$var)}"; 

o pre-definire il nome della classe come variabile:

$Test = "Test"; 
print "Hello {$Test::$var}"; 

Temo che non c'è modo nativo per ottenere questo risultato altrimenti.

+0

Grazie ** mario **; Avevo paura di ciò; la mancanza di supporto nativo per la mia funzionalità desiderata. Dovrò hackerare intorno per ottenere qualcosa da vicino. – Dan

0

È sempre possibile rompere l'eco nei pezzi più piccoli.

class Test{ 
    public static $var = 'world'; 
} 

echo "hello ", Test::$var; 
0

Questo funziona con l'operatore di concatenazione di stringhe

echo "hello ".Test::$var; 

EDIT

Nota (.): Funzioni, chiamate di metodo, variabili di classe statiche e costanti di classi all'interno {$} funzionano da PHP 5. Tuttavia, il valore letto sarà interpretato come nome di una variabile nell'ambito in cui è definita la stringa. Utilizzando singoli parentesi graffe ({}) non funzionerà per accedere ai valori di ritorno funzioni o metodi o valori delle costanti di classi o classe statica variabili.

Source Via This answer

+0

Grazie ** Gazler **; Non voglio però la concatenazione, cercando di sfruttare l'analisi variabile. – Dan

+0

Non credo sia possibile. Si prega di vedere questa domanda: http://stackoverflow.com/questions/1267093/php-static-variables-in-double-quotes Soprattutto il collegamento pubblicato come risposta superiore, che ho citato nelle mie modifiche. – Gazler