2010-06-16 5 views

Répondre

10

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

Notez que vous ne pouvez appliquer des objets ou des tableaux, mais pas les types « primitifs » comme flottant ou une chaîne. – svens

+0

Si vous aviez un setter qui attendait un type primitif, 'bool' par exemple, vous pourriez toujours' assert ('is_bool ($ value)'); '. – meagar

+2

@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. –

0

Pourquoi ne pas simplement assigner $ roof à un nouveau Roof()?

+0

Excusez-moi quoi? – dimo414

9

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.

0

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'); 
} 
Questions connexes