Czy istnieje jakiś sposób ustawienia jawnego typu pola obiektu w php? Coś w tym rodzaju:Deklaracja klasy PHP
class House{
private Roof $roof
}
Czy istnieje jakiś sposób ustawienia jawnego typu pola obiektu w php? Coś w tym rodzaju:Deklaracja klasy PHP
class House{
private Roof $roof
}
Nie, nie ma. Zmienne PHP zawsze mogą być dowolnego typu. Ale możesz wymusić typ w setera:
public function setRoof(Roof $roof) {
$this->roof = $roof;
}
Szukasz podpowiedzi typu PHP. Działa świetnie na wywołanie funkcji/metody. Oto instrukcja:
nie można użyć kodu PHP aby zadeklarować typ pola obiektu.
Ale można umieścić type podpowiedzi w docblock komentarzy:
class House{
/**
* @var Roof
*/
private $roof
}
to jeszcze nie czyni kod egzekwować typy, ale niektóre narzędzia IDE zrozumieć bloków dokumentacji i może ostrzec jeśli używasz tej zmiennej bez zgodności z podpowiedziami typu.
można również użyć następujących przed użyciem członkiem
if (!$this->roof instanceof Roof) {
throw new Exception('$this->roof is not an instance of Roof');
}
pamiętać, że można tylko egzekwowania obiektów lub tablic, lecz nie „prymitywne” typy jak pływaka lub sznurkiem. – svens
Czy byłeś osobą, która oczekiwała typu pierwotnego, na przykład 'bool', zawsze możesz' assert ('is_bool ($ value)'); '. – meagar
@svens: FWIW, rozwój PHP dodał podpowiedź typu skalarnego w dniu 20.05.2010. Nie jestem pewien, kiedy to zostanie wydane oficjalnie. –