首页 > 解决方案 > 如何更新我的私有布尔属性?

问题描述

我的“领域”实体:

  /**
  * @ORM\Column(type="boolean", nullable=true)
  */
  private $color;




public function getColor(): ?bool
  {
    return $this->color;
  }

  public function setColor(?bool $color): self
  {
    $this->color = $color;

    return $this;
  }

我很难更新我的私有财产:

$field = "color"
$content = 1;
$value->{$field} = $content;

我收到错误消息:

无法访问私有属性 App\Entity\Fields::$color

所以我测试了这个:

$value->setColor(1);

但我收到错误消息:

试图调用类“stdClass”的名为“setColor”的未定义方法。

一切正常,我将私有更改为公共。但我只是无法弄清楚如何使用私有属性设置值。

标签: phpoopobjectprivate

解决方案


这段代码:

<?php
class MyClass{
    private $attribute;

    public function getAttribute(){
        return $this->attribute;
    }

    public function setAttribute(?int $value){
        if($value)
        $this->attribute = $value;
    }
}

$obj = new MyClass;

//$obj->attribute = 3; //this won't work because attribute is private

$obj->setAttribute(42);

echo $obj->getAttribute();

按预期工作并输出42;尝试为你的类创建一个新对象并做同样的事情,看看它是否有效。


推荐阅读