2013-09-23 3 views
20
<?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 , Зачем?

+6

Походит два отдельных вопросов здесь. Нет, этот тип намека на свойство недействителен; вы не можете вводить свойства подсказки. Снижая эту часть вопроса, можете ли вы прояснить и лучше продемонстрировать другую часть? – deceze

+0

Я не уверен, что еще я предложил? Знание того, что вы не можете вводить свойства подсказки, - это все, что мне нужно знать. (Если вы ответите, я соглашусь с ним) –

+0

* «Когда я удаляю тип hinting и var_dump, что переменная $ connection, она будет частной Sandbox \ Sandbox, а не Sandbox \ Connectors \ ISandboxconnector, почему? "* ← Эта часть. – deceze

ответ

26

PHP не поддерживает тип намека на поля. Таким образом, определить переменный, как показано ниже:

class Sandbox { 
    private $connection; 

Чтобы помочь редакторам понять ваш код, который вы могли бы использовать @var тег к документу ожидаемого типа поля:

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

Работает в Netbeans. –

+0

Работает в PhpStorm. – Phil

Смежные вопросы