2010-06-16 8 views
5

Gibt es eine Möglichkeit, explizite Typ zu Objekt-Feld in PHP zu setzen? So etwas wie dasPHP-Klassen-Deklaration

class House{ 
     private Roof $roof 
} 

Antwort

10

Nein, gibt es nicht. PHP-Variablen können immer von jedem Typ sein. Aber Sie können einen Typ in der Setter erzwingen:

public function setRoof(Roof $roof) { 
    $this->roof = $roof; 
} 
+2

Beachten Sie, dass nur Objekte oder Arrays durchsetzen können, aber nicht „primitiv“ Typen wie Schwimmer oder Zeichenfolge verwenden könnte. – svens

+0

Hätten Sie einen Setter, der einen primitiven Typ erwartet, zum Beispiel 'bool', könnten Sie' assert ('is_bool ($ value)'); '. – meagar

+2

@svens: FWIW, PHP-Entwicklung hinzugefügt skalaren Typ Hinting am 20.05.2010. Ich bin mir nicht sicher, wann das eine offizielle Veröffentlichung werden wird. –

0

Warum nicht einfach zuweisen $ Dach zu einem neuen Dach()?

+0

Entschuldigung, was? – dimo414

9

Sie nicht PHP-Code verwenden, um den Typ eines Objektfeldes zu erklären.

Aber Sie können Typ Hinweise in docblock Kommentare setzen:

class House{ 
     /** 
     * @var Roof 
     */ 
     private $roof 
} 

Diese noch nicht der Code macht Typen erzwingen, aber einige IDE-Tools zu verstehen, die Docblocks und kann Sie warnen, wenn Sie diese Variable verwenden ohne dem Typhinweis zu entsprechen.

0

Sie auch die folgende, bevor Sie dem Mitglied

if (!$this->roof instanceof Roof) { 

    throw new Exception('$this->roof is not an instance of Roof'); 
}