私はいくつかの混乱を持っています!以下に示すような単純なクラスがあります
class MyClass {
public $bar;
}
次に、インスタンスを作成しました
$cls = new MyClass;
$bar次に、クラスの外部からパブリック プロパティに値を割り当てました。
$cls->bar='Bar';
次に、新しいパブリック プロパティを追加$bazし、クラスの外部から値を割り当てました。
$cls->baz='Baz';
次に、新しいパブリック プロパティを追加し$showBar、クラスの外部から値を割り当てました。今回は、値は無名関数です。
$cls->showBar = function(){
return $this->bar;
};
$cls次に、使用中のvar_dump($cls);インスタンスをダンプしました。出力は次のとおりです
object(MyClass)[10]
public 'bar' => string 'Bar' (length=3)
public 'baz' => string 'Baz' (length=3)
public 'showBar' =>
object(Closure)[11]
anonymous関数を含めて追加したすべてのパブリックプロパティが利用可能であるようです。
echo $cls->bar; // Bar
echo $cls->baz; // Baz
echo $cls->showBar(); // error
public プロパティshowbarはクラスで使用できます (var_dump に表示されます) が、関数を呼び出すと、次のように表示されます
致命的なエラー: 234 行目の D:\xampp\htdocs\phpTutorialInfo\bind\bindtoCls.php の未定義メソッド MyClass::showBar() の呼び出し
問題は次のとおりです。初期化後に新しいプロパティを追加することは可能です(スカラー値で正常に動作します)。また、利用可能なようにshowbar見えますが、なぜそれを認識できないPhpのでしょうか。値が匿名関数であるため、var_dump出力で利用できるのはなぜですか関数自体を含め、なぜ値を割り当てさせて(無名関数)、プロパティPhpの値を割り当てようとしたときにエラーがスローされたはずですか?showbarそれはまったく可能ですか?