2010-06-16 15 views
5

¿Hay alguna forma de establecer el tipo explícito en el campo de objeto en php? Algo como estoDeclaración de clase PHP

class House{ 
     private Roof $roof 
} 

Respuesta

10

No, no lo es. Las variables PHP siempre pueden ser de cualquier tipo. Pero se puede hacer cumplir un tipo en la incubadora:

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

Tenga en cuenta que sólo se puede hacer cumplir los objetos o arrays, pero no los tipos "primitivos" como flotador o cadena. – svens

+0

Si tuvieras un setter que esperara un tipo primitivo, 'bool' por ejemplo, siempre podrías' assert ('is_bool ($ value)'); '. – meagar

+2

@svens: FWIW, PHP desarrollo añadido tipo escalar dando pistas el 20/05/2010. Sin embargo, no estoy seguro de cuándo será el lanzamiento oficial. –

0

¿Por qué no asignar $ techo para un techo nuevo()?

+0

Disculpe, ¿qué? – dimo414

9

No puede utilizar código PHP para declarar el tipo de un campo de objeto.

Pero puedes poner tipo consejos en docblock comentarios:

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

Esto todavía no hacen cumplir el código de tipos, pero algunas herramientas IDE entienden los docblocks y puede advertirle cuando se utiliza esta variable sin ajustarse a la sugerencia de tipo.

0

también se puede utilizar la siguiente antes de usar el miembro

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

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