PHP 7.0, die zum Zeitpunkt des Schreibens (2016 die aktuelle Minor-Release ist -05-16), unterstützt dies nicht. Es gab einige Anstrengungen in dieser Richtung (wie die Typed Properties RFC, die für PHP 7.1 abgelehnt wurde), aber es gibt derzeit keine direkte Unterstützung.
In der Zwischenzeit gibt es einige Alternativen.
Sie können ein Privatgrundstück, das nur durch Getter und Setter zugänglich ist, die Typdeklarationen haben:
class Person
{
private $name;
public function getName(): string {
return $this->name;
}
public function setName(string $newName) {
$this->name = $newName;
}
}
Sie können auch ein öffentliches Eigentum machen und einen Docblock verwenden Typinformationen zu den Menschen, um die Code-Lese und unter Verwendung einer IDE, aber dies stellt keine Laufzeittyp-Kontrolle:
class Person
{
/**
* @var string
*/
public $name;
}
und in der Tat, können Sie Getter und Setter und einen Docblock kombinieren.
Wenn Sie abenteuerlustiger sind, könnten Sie eine gefälschte Eigenschaft mit der __get
, __set
, __isset
and __unset
magic methods machen, und überprüfen Sie die Typen selbst. Ich bin mir nicht sicher, ob ich es empfehlen würde.
Nicht, dass ich mir dessen bewusst bin. Im Allgemeinen sollten jedoch * alle * Einschränkungen für den Wert einer Eigenschaft durch einen Setter vorgenommen werden. Da der Setter leicht einen Typhint für das Argument "Wert" haben kann, ist es gut zu gehen. –
Viele Frameworks verwenden _protected_attribute (hauptsächlich für Controller). Gerade in diesen Fällen wäre das sehr nützlich. – CarlosCarucce