6
votes

Bug de frappe de données solide

est-il normal d'obtenir l'erreur " la valeur par défaut pour les paramètres avec un indice de type de classe ne peut être que null " pour une méthode dans une interface définie comme xxx

?

J'en ai besoin pour être bool, pas un objet, et faux par défaut.


1 commentaires

Il devrait fonctionner avec PHP7


5 Réponses :


3
votes

L'indication de type PHP 5 est limitée à une classe spécifique (ou à l'une de ses sous-classes) ou d'un tableau. Vous ne pouvez spécifier aucun autre type scalaire.


0 commentaires

10
votes

Il n'y a pas d'indication de type pour les paramètres booléens dans PHP (encore). Vous ne pouvez spécifier qu'un nom de classe ou tableau . Par conséquent, FOO FOO (BOOL $ B) signifie: "Le paramètre $ B doit être une instance de la classe" BOOL "ou NULL".

http://docs.php.net/language.oop5.typeHinting :

Les fonctions sont désormais en mesure de forcer les paramètres à être des objets (en spécifiant le nom de la classe dans le prototype de fonction) ou des tableaux (depuis PHP 5.1).

0 commentaires

5
votes

Comme indiqué déjà, tapez indiquant uniquement des œuvres pour les matrices et l'objet. Votre fonction peut être écrite comme ceci: xxx


1 commentaires

Ou soulever une exception User_Error ou lancer une exception si false === is_bool ($ force) Pour se rapprocher de "Erreur mortelle capturable" PHP soulève des paramètres inappropriés.



1
votes

Vous ne pouvez pas forcer un paramètre à être un booléen.

Comme trouvé dans Langue.OOP5.TypeHinting :

PHP 5 introduit le type d'indication. Les fonctions sont désormais en mesure de forcer les paramètres à être des objets [...], des interfaces, des tableaux (depuis PHP 5.1) ou appelables (depuis PHP 5.4).

[...]

Les indications de type ne peuvent pas être utilisées avec des types scalaires tels que INT ou String. [...]

et comme trouvé dans langue.types.intro , types scalaires PHP sont les suivants:

xxx

0 commentaires

0
votes

Vous pouvez essayer: xxx

considère comme une solution temporaire jusqu'à ce que vous amélioriez PHP.


0 commentaires