PHP:Getters和Setters

时间:2018-04-24 09:45:19

标签: php syntax

最近我正在建立一个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中看到过这样的事情,直到现在。 (注意新手警报)

3 个答案:

答案 0 :(得分:1)

这些是参数类型(输入和输出)。

  • ? - 它允许null传递给方法。
  • self - 这意味着该方法将返回其对象。

答案 1 :(得分:1)

它曾经注意到自php 7以来方法的输出类型,你可以得到更多的信息here

输出类型的?平均值可以是nullself与当前类的类型相同。

答案 2 :(得分:0)

自我意味着它返回这个类的实例。它被称为"流利的制定者"。有了它,你可以链式调用方法。例如:

$someObj->setId(1)
    ->setNum(5)
    ->setOtherAttr('string');