J'essayais d'obtenir que mes Netbeans se complètent automatiquement avec PHP , et j'ai appris que ce code est valide en PHP:
function blah(Bur $bur) {}
Quelques questions:
Cette indication de type ne fonctionne que pour la validation des arguments de fonction; vous ne pouvez pas déclarer qu'une variable PHP doit toujours être d'un certain type. Cela signifie que dans votre exemple, $ bur doit être de type Bur lorsque "blah" est appelé, mais $ bur pourrait être réaffecté à une valeur non Bur dans la fonction.
L'indication de type ne fonctionne que pour les noms de classe ou d'interface; vous ne pouvez pas déclarer qu'un argument doit être un entier, par exemple.
Un aspect ennuyeux de l'indication de type de PHP, qui est différent de Java, est que les valeurs NULL ne sont pas autorisées. Donc, si vous voulez l'option de passer NULL au lieu d'un objet, vous devez supprimer le type-hint et faire quelque chose comme ceci en 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 NULL comme valeur par défaut, même avec un indice de type.
EDIT: Vous pouvez également installer l'extension SPL Type Handling , qui vous donne des types d'encapsuleur pour les chaînes, les entiers, les flottants, les booléens et les énumérations.
EDIT: Vous pouvez également utiliser "array" depuis PHP 5.1, et "callable" depuis PHP 5.4.
EDIT: Vous pouvez également utiliser "string", "int", "float" et "bool" puisque PHP 7.0.
/**
* @var string
*/
public $variable = "Blah";
# 2: (...) Comment puis-je déclarer le type d'une variable dans PHP si je ne suis pas dans une fonction?
J'ai récemment entendu parler de " settype () " et " gettype () " en PHP4 et 5
Vous pouvez forcer le type de variable à tout moment facilement
Depuis PHP.net:
bool settype (mixte & $ var, chaîne $ type)
Paramètres
var: la variable en cours de conversion. type: Les valeurs possibles de type sont:
[: D Première visite, premier commentaire ...]
Cela impose-t-il réellement des limites sur le type de variable que je peux transmettre à la méthode blah?
Cela s'appelle type hinting . Selon la documentation PHP que je viens de relier, oui, elle impose des limites sur le type d'argument: " Ne pas satisfaire l'indicateur de type entraîne un erreur fatale capturable. "
Comment puis-je déclarer le type d'une variable dans PHP si je ne suis pas dans une fonction?
Lire type jonglage . Vous ne pouvez pas définir explicitement le type d'une variable en PHP, son type est décidé par le contexte dans lequel il est utilisé.