2009-11-21 12 views
42

Cosa significa il doppio sottolineatura in queste righe di codice PHP?Double Underscore in PHP?

$WPLD_Trans['Yes']=__('Yes',$WPLD_Domain); 
$WPLD_Trans['No']=__('No',$WPLD_Domain); 

risposta

56

Sembra che si sta utilizzando Wordpress - wp-includes/l10n.php definisce __ come una funzione che traduce una stringa (simile a gettext e il suo alias, _ ma con un parametro opzionale per specificare esplicitamente un dominio).

+35

Sono solo io o è così orribile? –

+31

Non sei solo tu. È orribile. –

+5

Orribile, ma molto conveniente. Come nota esplicativa, php.net dice che tutte le funzioni che iniziano con __ (double underscore) sono riservate. Sembra che non gli piaccia il fatto che WordPress e altri stiano affogando nel loro territorio del metodo magico. http://us.php.net/manual/en/language.oop5.magic.php – Lane

35

In senso stretto, non significa nulla in PHP in quanto non è una funzione predefinita. Tuttavia, in molti framework, come CakePHP e altre librerie, la doppia sottolineatura è una funzione utilizzata per tradurre stringhe in base alla preferenza della lingua/lingua dell'utente.

+3

Nessuna idea. Tuttavia, la versione CakePHP di __ si comporta in modo completamente diverso da quello in Wordpress (CakePHP, per impostazione predefinita, fa eco alla stringa a meno che il secondo parametro non sia falso). Scommetto che * non ha mai incitato nessuno prima ... – SimonJ

5

Come accennato, viene generalmente utilizzato per la traduzione di testi tra lingue, ma in realtà viene utilizzato nello stesso contesto di qualsiasi chiamata di funzione.

testfunction(); 

non è diverso quindi

__(); 
+20

In realtà, testfunction() è molto diverso, perché ha un nome sano. __ è una cosa completamente stupida per nominare una funzione. –