在类变量中键入提示

时间:2013-09-23 10:06:52

标签: php oop type-hinting

<?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该$连接变量时,它将是private Sandbox\Sandbox而不是Sandbox\Connectors\ISandboxconnector,为什么?

2 个答案:

答案 0 :(得分:39)

PHP不支持字段上的类型提示。所以定义一个变量如下:

class Sandbox {
    private $connection;

为了帮助编辑了解您的代码,您可以使用@var标记来记录该字段的预期类型:

class Sandbox {
    /** @var Connectors\ISandboxConnector */
    private $connection;

答案 1 :(得分:1)

自PHP 7.4起,您可以在类属性上键入提示,如here所示。例如,您的$connection属性如下所示:

class Sandbox {
    private Connectors\ISandboxConnector $connection;
}