2013-04-13 11 views
6

.を使用して連結を避けるために二重引用符で囲まれた定数を評価する方法はありますか?二重引用符で囲まれた定数を評価することはできますか?

echo "$variable"; 

echo "{$array["index"]}"; 

echo "{$this->myProperty}"; 

Unfortunallyはエコー "{MY_CONSTANT}" は動作しません:

例えば、私のようなことを行うことができます。

したがって、上記の例のような定数を評価し、連結を避ける方法はありますか?

コードに代わるものがあり、同じ結果が得られることは知っていますが、私は単なる定数を目指しています。

これまで私のモチベーションは、例えば、SQL文を書くことです:

MY_JOIN定数が

" 
orders 
INNER JOIN 
users 
    ON (orders.user_id = users.id) 
" 

のようなものかもしれないまたは

$dir = DIRECTORY_SEPARATOR."folder1".DIRECTORY_SEPARATOR."folder2".DIRECTORY_SEPARATOR; 

のようなものを避けるために

$sql = "SELECT * FROM {MY_JOIN} WHERE id > 100"; 

私は$separator = DIRECTORY_SEPARATORとコードのようなものを書くことができることを知っている $dir = "{$separator}folder1{$separator}folder2{$separator}";しかし、可能であれば、私は定数でこれを直接行いたいと思います。

+0

同様の質問:http://stackoverflow.com/questions/1267093/php-static-variables-in-double-quotesリンクについて – Nate

+0

Thxを。私は同意する、私の質問は、その1つの重複していた。しかし、私はもう少し説明してモチベーションを作ったと思う^^ – GarouDan

答えて

1

いいえ、これは単純にできません。しかし

、あなたの特定の例のための2つの偉大な回避策:

sprintf('SELECT ... %s ...', MY_CONSTANT); 

join(DIRECTORY_SEPARATOR, array('foo', 'bar', 'baz')); 
+1

'join'はより一般的に' implode'と書かれていますが、どちらも同じ関数を参照しています – IMSoP

+0

私はそれを認識しています。 。 – deceze

+0

私は十分に公平です。 「爆縮」の利点の1つは、自然に「爆発」となることです。重要なのは「分割」と同じではありません。 – IMSoP

2

興味深い、リンクは我々は非常に興味深いラムダ関数、でこれを行うことができ、提案されたよう。

作業例:

<?php 
$constant = function($cons){ 
    return constant($cons); 
}; 

define('FOO', 'Hello World!'); 
echo "The string says {$constant('FOO')}"; 
関連する問題