是否允许将实例变量隐式分配给实例? 也就是说,在没有实例变量的类的方法中,我可以这样做吗?
$this->foo = "foo";
$this->bar = "bar";
以后再打电话给他们? PHP会在这种情况下创建实例变量吗?
答案 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