2010-06-16 13 views
5

Czy istnieje jakiś sposób ustawienia jawnego typu pola obiektu w php? Coś w tym rodzaju:Deklaracja klasy PHP

class House{ 
     private Roof $roof 
} 

Odpowiedz

10

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; 
} 
+2

pamiętać, że można tylko egzekwowania obiektów lub tablic, lecz nie „prymitywne” typy jak pływaka lub sznurkiem. – svens

+0

Czy byłeś osobą, która oczekiwała typu pierwotnego, na przykład 'bool', zawsze możesz' assert ('is_bool ($ value)'); '. – meagar

+2

@svens: FWIW, rozwój PHP dodał podpowiedź typu skalarnego w dniu 20.05.2010. Nie jestem pewien, kiedy to zostanie wydane oficjalnie. –

0

Dlaczego po prostu nie przypisać dachu do nowego dachu()?

+0

Przepraszam, co? – dimo414

9

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.

0

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'); 
} 
Powiązane problemy