是否允许将实例变量隐式分配给实例?

时间:2009-12-25 21:21:03

标签: php oop

是否允许将实例变量隐式分配给实例? 也就是说,在没有实例变量的类的方法中,我可以这样做吗?

$this->foo = "foo";
$this->bar = "bar";

以后再打电话给他们? PHP会在这种情况下创建实例变量吗?

2 个答案:

答案 0 :(得分:1)

是的,它只会在对象上创建新属性。

答案 1 :(得分:1)

是。 PHP将简单地创建引用但尚未声明的任何成员变量。我刚用以下代码测试了它:

<?php
class Test {
    public function __construct() {
    }

    public function setMembers() {
        $this->foo = "fooValue";
        $this->bar = "barValue";
    }

    public function echoMembers() {
        echo $this->foo . "\n";
        echo $this->bar . "\n";
    }
}

$test = new Test();
$test->setMembers();
$test->echoMembers();
?>

执行时,输出:

fooValue
barValue

这证明了这一点。我仍然建议在类的顶部声明所有类成员变量。这就是维护代码的OO程序员期望看到的。

仅供参考:我使用以下版本的PHP运行我的测试:

$ php -version
PHP 5.2.8 (cli) (built: Feb  5 2009 21:21:13) 
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies