PHP:将一个类变量声明为一个stdClass对象
发布时间:2020-12-13 13:57:05 所属栏目:PHP教程 来源:网络整理
导读:这可能很简单,但是我无法弄清楚如何对Google的问题进行说明,所以这里: 所以,我经常做这样的事情 class foo { private $bar = array();} …将某些类属性设置为数组.但是,我想使一个私人财产成为一个对象,而这样的东西: class foo { private $bar = new stdC
这可能很简单,但是我无法弄清楚如何对Google的问题进行说明,所以这里:
所以,我经常做这样的事情 class foo { private $bar = array(); } …将某些类属性设置为数组.但是,我想使一个私人财产成为一个对象,而这样的东西: class foo { private $bar = new stdClass(); } 我尝试了几个这样的变化,没有一个工作.这可以做吗对于奖金积分,您可以将私有财产分配为任何其他类别的对象吗? 谢谢!
您不能在类成员声明中使用函数(包括构造函数).而是在类的构造函数中设置它.
class Foo { private $bar; private $baz; public function __construct() { $this->bar = new stdClass(); $this->baz = new Bat(); } public function __get($key) { if(isset($this->$key) { return $this->$key; } throw new Exception(sprintf('%s::%s cannot be accessed.',__CLASS__,$key)); } } $foo = new Foo(); var_dump($foo->bar); var_dump($foo->bat); 当你扩展类并需要覆盖构造函数,但是仍然希望在父类构造函数中的东西: class FooExtended { protected $coolBeans; public function __construct() { parent::__construct(); // calls the parents constructor $this->coolBeans = new stdClass(); } } $foo = new FooExtended(); var_dump($foo->bar); var_dump($foo->bat); var_dump($foo->coolBeans); 还应该注意的是,这与属性的可见性无关,无论是受保护的,私有的还是公共的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |