【问题标题】:How can I update my private boolean property? [closed]如何更新我的私有布尔属性? [关闭]
【发布时间】:2020-02-29 21:36:53
【问题描述】:

我的“字段”实体:

  /**
  * @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);

但我收到错误消息:

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

当我将私有更改为公共时,一切正常。 但我就是不知道如何使用私有属性设置值。

【问题讨论】:

  • $value 不是您发布部分代码的类的实例。
  • 如果是实例,有没有办法在此之前检查一下?
  • instanceof 构造。
  • 看起来您正在尝试使用某些特定的 ORM 库...?究竟是什么?

标签: php oop object private


【解决方案1】:

这段代码:

<?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;尝试为您的类创建一个新对象并执行相同的操作,看看它是否有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-30
    • 2020-08-21
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多