2013-09-23 8 views
20
<?php 

namespace Sandbox; 

class Sandbox { 

    private Connectors\ISandboxConnector $connection; 

    public function __construct(Connectors\ISandboxConnector $conn) { 
     $this->connection = $conn; 
    } 

} 

?> 

Dla powyższego kodu Otrzymuję następujący błąd:Rodzaj podpowiedzi w zmiennych klasowych

Parse error: syntax error, unexpected 'Connectors' (T_STRING), expecting variable (T_VARIABLE) 

Kiedy usunąć podpowiedzi typu i var_dump że zmienna $ połączenia, będzie private Sandbox\Sandbox i nie Sandbox\Connectors\ISandboxconnector , czemu?

+6

Wygląda na to dwa odrębne pytania tutaj. Nie, wskazówka typu na tej właściwości jest nieprawidłowa; nie możesz wpisać właściwości podpowiedzi. Po obniżeniu tej części pytania można wyjaśnić i lepiej zademonstrować drugą część? – deceze

+0

Nie jestem pewien, jaką inną część zasugerowałem? Wiedząc, że nie możesz wpisać właściwości podpowiedzi, to wszystko, co powinienem wiedzieć. (Jeśli ją wybierzesz, zaakceptuję ją) –

+0

* "Po usunięciu podpowiedzi typu i zmiennej var_dump tej zmiennej połączenia $ będzie to prywatne Sandbox \ Sandbox, a nie Sandbox \ Connectors \ ISandboxconnector, dlaczego? "* ← Ta część. – deceze

Odpowiedz

26

PHP nie obsługuje wprowadzania typów w polach. Więc zdefiniować zmienną, jak poniżej:

class Sandbox { 
    private $connection; 

Aby pomóc zrozumieć edytory kodu można użyć @var tag udokumentować spodziewany typ pola:

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

Działa w Netbeans. –

+0

Działa w PhpStorm. – Phil