加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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);

还应该注意的是,这与属性的可见性无关,无论是受保护的,私有的还是公共的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读