Domanda

Questa domanda mi ha fatto pensare sulle stringhe nude.

Quando PHP vede una stringa che non è racchiuso tra virgolette, si verifica innanzitutto se si tratta di una costante. In caso contrario, solo presuppone che è una stringa e va avanti comunque. Così, per esempio se ho

echo $foo[bar];

Se c'è una chiamata bar costante che utilizza per la chiave dell'array, ma se poi non si tratta bar come una stringa a nudo, in modo che si comporta proprio come

echo $foo["bar"];

Ciò può causare tutti i tipi di problemi, se in un prossimo futuro una costante viene aggiunto con lo stesso nome.

La mia domanda è, c'è qualche situazione in cui si fa in realtà senso utilizzare una stringa nuda?

È stato utile?

Soluzione

No, non riesco a vedere un solo caso in cui non avrebbe molto senso, ed è sempre pericoloso. Utilizzando le stringhe senza virgolette dovrebbe assolutamente essere riservata per affrontare le costanti. Non capisco come gli inventori di PHP potrebbe decidere di introdurre questo comportamento ridicolo a tutti - si fa il corretto utilizzo di costanti quasi impossibile (perché se si tenta di accedere a una costante che non è stato definito, PHP genererà in silenzio e stupidamente una stringa) senza dare qualsiasi beneficio.

Altri suggerimenti

Questo non significa probabilmente conta come legittima, ma quadro tweetable proof-of-concept MVC del mio amico, TweetMVC rifugge citazioni in alcuni punti di spremere un paio di più caratteri, ad esempio:

foreach(c('mod')as$f)require"t/$f.php";@list($c,$m,$a)=explode('/',@$_GET[r],3);$c=$c?:c('dc');$o=(@include"c/$c.php")?@new$c($m,$a):e(1)

L'unica volta che si utilizza una stringa nuda come una chiave è se è stato precedentemente usato in define() per una costante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top