2016-07-08 4 views
0

質問はとても簡単です。 $obj->A::aのようなものをどうすれば使うことができますか?A::aは、objのプロパティの名前の定数文字列ですか?今、これらの両方のコードが同じである

class A{ 
const a='b'; 
} 
class B{ 
    public $b='somthing'; 
} 

$k='b'; 
$obj=new B(); 

は、この単純なコードに見てみましょう、

var_dump(A::a); //==string(1) "b" 
var_dump($k); //==string(1) "b" 

今私は、コードの下に使用することができます は$ OBJエコー - > $ kは、 //出力は、次のとおりです。気にいら しかし、このコードは動作しない。

echo $obj->A::a; //Error 

私はたくさんのにに似constトンを持っているので、私は上記のコードに似た何かが必​​要。

タイトルを編集するには気軽に、本当に私はそれをどのように名前を付けるべきかわかりません!私自身が答えを見つけ

$x = A::a; 
echo $obj->$x; 
+3

あなたの質問があれば、 'echo $ obj - > {A :: a};'はあなたが探している仕事をします。 – briosheje

+0

はい、+ 1人です。 –

答えて

1

それは単にですあなたが$obj->Aを実行してやろうとしているものです。あなたが$obj->methodA()->methodB()のような何かをしたときの呼び出しの順序について考えるなら、これは論理的です。

これにアクセスする適切な方法は、むしろ$obj->{A::a}です。

1

あなたが何かのように意味ですか。 答えは非常に簡単です。ただ、このようconstA::a)に{}を追加します。クラスBは、したがって、あなたがそれにアクセスすることはできませんA.と呼ばれる任意のpublic属性を持っていないため

echo $obj->{A::a}; 
+0

それはうまくいくでしょうし、私は魅力的な方法で答えを見つけました。あなたの答えに感謝します。あなたは私の答えを見ることができます –

+0

あなたは答えとしてマットから答えをフラグする必要があります – fehrlich

+0

私はしましたが、stackoverflowは1分待って言った。 –

0

関連する問題