¿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
}
¿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
}
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;
}
Está buscando la sugerencia de tipo de PHP. Funciona muy bien en llamadas de función/método. Aquí está el manual:
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.
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');
}
Tenga en cuenta que sólo se puede hacer cumplir los objetos o arrays, pero no los tipos "primitivos" como flotador o cadena. – svens
Si tuvieras un setter que esperara un tipo primitivo, 'bool' por ejemplo, siempre podrías' assert ('is_bool ($ value)'); '. – meagar
@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. –