php - 如何更新我的私有布尔属性?
问题描述
我的“领域”实体:
/**
* @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”的未定义方法。
一切正常,我将私有更改为公共。但我只是无法弄清楚如何使用私有属性设置值。
解决方案
这段代码:
<?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
;尝试为你的类创建一个新对象并做同样的事情,看看它是否有效。
推荐阅读
- graphics - GLUT GL 3/4 球体有问题
- python - 当dtype转换失败时,用pd.read_csv返回NaN?
- apache-kafka - Kafka Stream Suppress session-windowed-aggregation
- mysql - 是否可以在 SELECT * JOIN 上排除 FK 的选择?
- metatrader4 - 如何在 mql5 中每天运行一次此代码?
- static - constexpr 静态数据成员不存在初始化程序
- jekyll - 使用前面的标题作为 url 永久链接
- excel - 使用 Excel VBA 列出第二级 Outlook 子文件夹中的电子邮件
- python - 如何允许 AWS IOT python SDK 与多个“事物”通信
- java - 如何使用 SpEL 从弹簧属性中获取完整路径/密钥?