Existe-t-il un moyen de définir le type explicite sur le champ objet dans php? Quelque chose comme çaDéclaration de la classe PHP
class House{
private Roof $roof
}
Existe-t-il un moyen de définir le type explicite sur le champ objet dans php? Quelque chose comme çaDéclaration de la classe PHP
class House{
private Roof $roof
}
Non, il n'y en a pas. Les variables PHP peuvent toujours être de n'importe quel type. Mais vous pouvez appliquer un type dans le setter:
public function setRoof(Roof $roof) {
$this->roof = $roof;
}
Vous recherchez PHP Type Hinting. Cela fonctionne très bien sur les appels de fonction/méthode. Voici le manuel:
Vous ne pouvez pas utiliser le code PHP pour déclarer le type d'un champ d'objet.
Mais vous pouvez mettre le type conseils dans docblock commentaires:
class House{
/**
* @var Roof
*/
private $roof
}
Cela ne fait toujours pas le code respecter types, mais certains outils IDE comprennent les docblocks et peut vous avertir si vous utilisez cette variable sans se conformer à l'indice de type.
vous pouvez également utiliser les éléments suivants avant d'utiliser le membre
if (!$this->roof instanceof Roof) {
throw new Exception('$this->roof is not an instance of Roof');
}
Notez que vous ne pouvez appliquer des objets ou des tableaux, mais pas les types « primitifs » comme flottant ou une chaîne. – svens
Si vous aviez un setter qui attendait un type primitif, 'bool' par exemple, vous pourriez toujours' assert ('is_bool ($ value)'); '. – meagar
@svens: FWIW, le développement PHP a ajouté un indicateur de type scalaire le 20/05/2010. Je ne sais pas quand cela en fera une version officielle, cependant. –