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 em>" pour une méthode dans une interface définie comme ? p> J'en ai besoin pour être bool, pas un objet, et faux par défaut. p> p>
5 Réponses :
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. P>
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 http://docs.php.net/language.oop5.typeHinting : p>
tableau code>.
Par conséquent,
FOO FOO (BOOL $ B) CODE> signifie: "Le paramètre $ B doit être une instance de la classe" BOOL "ou NULL". P>
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). BlockQuote>
Comme indiqué déjà, tapez indiquant uniquement des œuvres pour les matrices et l'objet. Votre fonction peut être écrite comme ceci:
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.
Vous ne pouvez pas forcer un paramètre à être un booléen.
Comme trouvé dans Langue.OOP5.TypeHinting : P>
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).[...] p>
Les indications de type ne peuvent pas être utilisées avec des types scalaires forts> tels que INT ou String. [...] p> blockQuote>
et comme trouvé dans langue.types.intro , types scalaires PHP sont les suivants: P>
xxx pré> blockQuote> p> p> P>
Vous pouvez essayer: considère comme une solution temporaire jusqu'à ce que vous amélioriez PHP. P> P>
Il devrait fonctionner avec PHP7