PHP类声明

时间:2010-06-16 22:51:38

标签: php

有没有办法在php中将显式类型设置为对象字段?像这样的东西

class House{
       private Roof $roof
}

5 个答案:

答案 0 :(得分:10)

不,没有。 PHP变量可以始终为任何类型。但是你可以在setter中强制执行一个类型:

public function setRoof(Roof $roof) {
  $this->roof = $roof;
}

答案 1 :(得分:9)

您无法使用PHP代码声明对象字段的类型。

但您可以在docblock评论中输入提示

class House{
       /**
        * @var Roof
        */
       private $roof
}

这仍然不会使代码强制执行类型,但某些IDE工具会理解docblocks,并且如果您使用此变量而不符合类型提示,则可能会发出警告。

答案 2 :(得分:3)

您正在寻找PHP的类型提示。它适用于函数/方法调用。这是手册:

http://php.net/manual/en/language.oop5.typehinting.php

答案 3 :(得分:0)

为什么不将$ roof分配给新的Roof()?

答案 4 :(得分:0)

在使用会员

之前,您还可以使用以下内容
if (!$this->roof instanceof Roof) {

    throw new Exception('$this->roof is not an instance of Roof');
}