Ce type-hinting ne fonctionne que pour la validation des arguments de la fonction; vous ne pouvez pas déclarer une variable PHP doit toujours être d'un certain type. Cela signifie que dans votre exemple, $bur doit être de type Bur lorsque "bla" est appelé, mais $bur pourraient être réaffectés à un non-Bur valeur à l'intérieur de la fonction.
Type-hinting ne fonctionne que pour la classe ou de l'interface de noms; vous ne pouvez pas déclarer qu'un argument doit être un nombre entier, par exemple.
L'un des aspects ennuyeux de PHP du type-hinting, ce qui est différent de Java, est que les valeurs NULL ne sont pas autorisés. Donc, si vous voulez l'option de passage de la valeur NULL au lieu d'un objet, vous devez supprimer le type de l'indice et de faire quelque chose comme ceci dans le haut de la fonction:
assert('$bur === NULL || $bur instanceof Bur');
EDIT: Ce dernier paragraphe ne s'applique pas depuis PHP 5.1; vous pouvez maintenant utiliser la valeur NULL comme valeur par défaut, même avec un soupçon type.
EDIT: Vous pouvez également installer le SPL Type de Manipulation extension, ce qui vous donne wrapper types pour les chaînes de caractères, entiers, des flotteurs, des booléens, et les énumérations.
EDIT: Vous pouvez également utiliser le "tableau" depuis PHP 5.1, et de "callable" depuis PHP 5.4.