为什么未初始化的财产在课堂上公开?

dev*_*v02 0 php oop

请考虑以下代码:

class foo {
    function bar() {
        $this->baz = 'hello there!';
    }
}

$f = new foo;
$f->bar();
echo $f->baz; // hello there!
Run Code Online (Sandbox Code Playgroud)

为什么上面的代码有效?我的意思是我没有初始化的$baz变量,也是我不使用__get__set魔术方法.我原以为它会给我错误,但似乎$baz已经创建并分配了public可见性.(顺便说一下,它确实在静态上下文中给出错误)

Vai*_* Pc 5

谁告诉你没有初始化,你已经通过语句初始化$this->baz = 'hello there!'; 这是面向对象的概念如何工作.你声明一个类,为该类创建一个实例,然后访问该函数,最后在该成员函数中回显一个变量,这就是面向对象的工作方式......