私はいくつかの混乱を持っています!以下に示すような単純なクラスがあります
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
それはまったく可能ですか?