最近我正在建立一个symfony应用程序,我必须创建一些实体。为了创建这些实体,我使用了symfony控制台并运行了make:entity
脚本。
然后问我,如果我想添加一些字段。当然,我刚刚使用此功能添加了我的属性,因为它易于使用。然后它使用匹配的学说注释和getter和setter自动创建我的属性。这是一个小例子:
/**
* @ORM\Column(type="string", length=254)
*/
private $attr1;
/**
* @ORM\Column(type="integer")
*/
private $attr2;
/**
* @ORM\Column(type="boolean")
*/
private $attr3;
public function getAttr1(): ?string
{
return $this->attr1;
}
public function setAttr1(string $attr1): self
{
$this->attr1 = $attr1;
return $this;
}
public function getAttr2(): ?int
{
return $this->attr2;
}
public function setAttr2(int $attr2): self
{
$this->attr2 = $attr2;
return $this;
}
public function getAttr3(): ?bool
{
return $this->attr3;
}
public function setAttr3(bool $attr3): self
{
$this->attr3 = $attr3;
return $this;
}
现在,我的问题是那些?string || ?int ||?bool || self
的含义。他们喜欢告诉函数期望返回string
以及self
告诉函数的是什么?我对此感到有点困惑,因为我从未在php中看到过这样的事情,直到现在。 (注意新手警报)
答案 0 :(得分:1)
这些是参数类型(输入和输出)。
?
- 它允许null
传递给方法。self
- 这意味着该方法将返回其对象。答案 1 :(得分:1)
它曾经注意到自php 7以来方法的输出类型,你可以得到更多的信息here
输出类型的?
平均值可以是null
,self
与当前类的类型相同。
答案 2 :(得分:0)
自我意味着它返回这个类的实例。它被称为"流利的制定者"。有了它,你可以链式调用方法。例如:
$someObj->setId(1)
->setNum(5)
->setOtherAttr('string');