2017-12-27 5 views
0

静的変数を取り出すためにPHPの中括弧構文を使用しようとしています。ここでは簡単なテストクラスです:静的変数でPHP複合(中括弧)構文を使用するときの問題

class asdf{ 
    public static $variable = '[email protected]'; 

    public static function getValue() { 
     return "{asdf::$variable}bar.com"; 
    } 
} 

私はいくつかのバリエーション、そのうちのいくつか(のような"${asdf::$variable}")を試した私に当時のルックアップとして戻って解析されます文字列として結果を与えます。だから、私はほとんどが働いていることを知っています。

私はその機能を呼び出すと、養成のために、私は '[email protected]'のようなものを期待しています。

私はそれが構文上の問題であることを期待していますが、official documentationで何か便利なものが見つかりませんでした。それとも、それは多くの人ができるだけ静的なことを避けることがわかっているので、不足しているかもしれません。

+2

する必要がある場合は、単一の波括弧を使用して '複雑な構文の下部に述べたように、あなたも({})は動作しません、変数varの構文を使用することができます関数またはメソッドの戻り値またはクラス定数または静的クラス変数の値にアクセスするためのクラスです。静的クラス変数にアクセスしようとしているところです。 – fyrye

+1

[PHP静的変数の二重引用符で囲まれた可能性のある重複](https://stackoverflow.com/questions/1267093/php-static-variables-in-double-quotes) – fyrye

答えて

4

あなたがしたいのは、単にpossibleではありません。

関数、メソッド呼び出し、静的クラス変数、およびクラスはPHP 5以降 内部{$}作業定数しかし、アクセス値が の文字列範囲内の変数の名前として解釈され が定義されています。ファンクションまたはメソッドの戻り値 またはクラス の定数または静的クラス変数の値にアクセスするには、単一の中括弧({})を使用できません。

最も簡単な方法は、varアクセス​​を文字列の外側に移動することです。これを行う

class asdf{ 
    public static $variable = '[email protected]'; 

    public static function getValue() { 
     return asdf::$variable . 'bar.com'; 
    } 
} 

あなたは

class asdf{ 
    public static $variable = '[email protected]'; 

    public static function getValue($var = "variable") { 
     return asdf::$$var . 'bar.com'; 
    } 
} 
+0

ありがとうございました。私はすでにちょうどいくつかの文字列の連結を行った、ちょうど私が狂っていないことを確認したい。 –