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
}
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
}
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;
}
Sie suchen PHP Typ Hinting. Es funktioniert hervorragend bei Funktions-/Methodenaufrufen. Hier ist das Handbuch:
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.
Sie auch die folgende, bevor Sie dem Mitglied
if (!$this->roof instanceof Roof) {
throw new Exception('$this->roof is not an instance of Roof');
}
Beachten Sie, dass nur Objekte oder Arrays durchsetzen können, aber nicht „primitiv“ Typen wie Schwimmer oder Zeichenfolge verwenden könnte. – svens
Hätten Sie einen Setter, der einen primitiven Typ erwartet, zum Beispiel 'bool', könnten Sie' assert ('is_bool ($ value)'); '. – meagar
@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. –