<?php
namespace Sandbox;
class Sandbox {
private Connectors\ISandboxConnector $connection;
public function __construct(Connectors\ISandboxConnector $conn) {
$this->connection = $conn;
}
}
?>
对于上面的代码,我得到以下错误:
Parse error: syntax error, unexpected 'Connectors' (T_STRING), expecting variable (T_VARIABLE)
当我删除类型提示和var_dump
$ connection变量时,它将是,private Sandbox\Sandbox
而不是Sandbox\Connectors\ISandboxconnector
,为什么?
PHP 7.3及以下版本不支持类型化属性。您只能按以下方式定义变量:
class Sandbox {
private $connection;
但是,为了帮助编辑者理解您的代码,您可以使用@var
标记来记录属性的预期类型:
class Sandbox {
/** @var Connectors\ISandboxConnector */
private $connection;
PHP 7.4.0
感谢@Manuel提到新的更新,PHP 7.4现在根据PHP RFC引入了类型化属性:Typed Properties 2.0。
物业类型声明支持PHP支持的所有类型声明,与异常void
和callable
。还支持任何类或接口名称,stdClass,标量和复合类型,对父对象和自己对象的引用。
class Sandbox {
public int $id;
public string $name;
private Connectors\ISandboxConnector $connection;
}
注意:注意副作用,例如未初始化状态和继承严格的规则。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句