我有一些困惑!我有一个简单的类,如下所示
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
公共属性showbar
在类中可用(var_dump 显示它)但是当我调用它说的函数时
致命错误:在第 234 行的 D:\xampp\htdocs\phpTutorialInfo\bind\bindtoCls.php 中调用未定义的方法 MyClass::showBar()
问题是:可以在初始化后添加新属性(使用标量值可以正常工作)并且showbar
似乎可用,那么为什么无法Php
识别它,如果是因为它的值是一个匿名函数,那么为什么它在var_dump
输出中可用包括函数本身以及为什么Php
让我分配值(匿名函数),当我尝试分配属性的值时它应该抛出错误showbar
?这有可能吗?