为什么在实体构造函数中使用setter或field键会得到不同的结果?

时间:2016-12-06 21:02:46

标签: php

Theme函数中使用$this->type = 'theme';时,以下是我的实体__construct的新实例的转储。

ExplorerController.php on line 197:
Theme {#450 ▼
  -id: null
  -headings: ArrayCollection {#449 ▶}
  -infos: null
  -base: null
  -deletedAt: null
  -key: null
  -description: null
  -type: null
  +"type": "theme"
}

我不明白为什么最后一个字段类型出现两次,首先是null值,然后是"加"签到前面。

如果我使用setter $this->setType('theme');,则结果符合预期:

ExplorerController.php on line 197:
Theme {#450 ▼
  -id: null
  -headings: ArrayCollection {#449 ▶}
  -infos: null
  -base: null
  -deletedAt: null
  -key: null
  -description: null
  -type: "theme"
}

我想这与代理有关,但这是一个我不完全理解的主题。

有人能解释一下这里发生了什么吗?

1 个答案:

答案 0 :(得分:3)

  • type前面的短划线表示它是私人会员。
  • 加号表示公共成员。

通过明确设置$this->type,您将设置公共成员。

如果没有真正看到你的代码,我不能提供任何其他建议,除非确保你没有定义$type两次(可能是在扩展类或特征中?)。