PHP类声明
在php中有没有办法将显式类型设置为object字段?像这样的PHP类声明,php,Php,在php中有没有办法将显式类型设置为object字段?像这样的 class House{ private Roof $roof } 不,没有。PHP变量始终可以是任何类型。但您可以在setter中强制执行一个类型: public function setRoof(Roof $roof) { $this->roof = $roof; } 为什么不将$roof分配给一个新的roof()?您正在寻找PHP的类型提示。它对函数/方法调用非常有效。这是手册: 不能使用PHP代码
class House{
private Roof $roof
}
不,没有。PHP变量始终可以是任何类型。但您可以在setter中强制执行一个类型:
public function setRoof(Roof $roof) {
$this->roof = $roof;
}
为什么不将$roof分配给一个新的roof()?您正在寻找PHP的类型提示。它对函数/方法调用非常有效。这是手册:
不能使用PHP代码声明对象字段的类型 但您可以在注释中添加类型提示:
class House{
/**
* @var Roof
*/
private $roof
}
这仍然不会使代码强制执行类型,但是一些IDE工具了解docblocks,如果您在不符合类型提示的情况下使用此变量,可能会发出警告。在使用成员之前,您还可以使用以下命令
if (!$this->roof instanceof Roof) {
throw new Exception('$this->roof is not an instance of Roof');
}
请注意,您只能强制执行对象或数组,但不能强制执行“基本”类型,如float或string。如果您有一个需要基本类型的setter,例如
bool
,您可以始终assert('is_bool($value)')2010年5月20日,PHP开发增加了标量类型暗示。不过,我不确定这将在何时正式发布。