php: Déclare le type d'arguments d'une fonction
je suis tring de faire une fonction avec des arguments déclarés types de vérifier rapidement si elles sont dans le bon format mais quand c'est une chaîne de retour toujours cette erreur
Catchable fatal error: Argument 2 passé à la fonction myfunction() doit être une instance de la chaîne, chaîne de caractères donnée, appelée dans chemin_vers_fichier sur la ligne 69 et définis dans chemin_vers_fichier à la ligne 49
function myfunction( array $ARRAY, string $STRING, int $INTEGER ) {
return "Args format correct";
}
myfunction(array("1",'2','3','4'), "test" , 1234);
où est l'erreur?
source d'informationauteur oscurodrago
Vous devez vous connecter pour publier un commentaire.
Selon le PHP5 documentation:
Depuis
string
etint
ne sont pas des classes, vous ne pouvez pas le type de l'indice" dans votre fonction.PHP 7.0 déclarant argument de type string, int, float, bool est pris en charge.
Cela peut-être utile pour ceux qui voient ce post depuis la disponibilité de PHP 7
Avec PHP 7, son désormais possible de déclarer des types. Vous pouvez consulter le lien suivant pour plus d'informations.
http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration
Vous pouvez faire quelque chose comme ce qui a toujours travaillé pour moi
pour la chaîne
cela force le nom à une chaîne, elle ne vérifie pas si ses une chaîne
pour les valeurs numériques
ce qui force à l'âge d'être un numéro, si une chaîne est passée, la valeur sera 0
pour les valeurs de tableau , il y a deux variations
si un tableau n'est pas dépassé, il lève une erreur
Ce serait passer un tableau vide de aucune valeur n'est fournie pour
$data
string
int
et d'autres types intégrés ne sont pas classesdans l'argument que vous spécifiez classede l'argument. La seule prise en charge intégrée de type à être mis il y aarray
.Vous ne pouvez pas définir le type que
string
etint
. PHP "ne sait pas" ce qu'ils sont.Si vous n'êtes pas à l'aide de PHP 7.x ou besoin de quelques complexes argument validations (comme "d'un tableau ou d' \Traversable" parce que vous pouvez traverser les tableaux, mais ils sont des types primitifs et ne pas mettre en œuvre l' \Traversable interface), vous pouvez utiliser args module de Non-standard PHP library (NSPL).
Sorties:
quand j'ai besoin d'utiliser un Type de Conseils, je fais ceci:
Selon Manuel PHPdans PHP 5.x vous ne pouvez pas utiliser
array
comme indice, mais dans PHP 7.x vous pouvez! Prendre un coup d'oeil:Class/interface name
Le paramètre doit être un instanceof la même catégorie ou nom de l'interface. PHP 5.0.0self
Le paramètre doit être un instanceof la même classe que celui de la méthode est définie sur. Ce ne peut être utilisé sur la classe et les méthodes d'instance. PHP 5.0.0array
Le paramètre doit être un tableau. PHP 5.1.0callable
Le paramètre doit être valide, appelable. PHP 5.4.0bool
Le paramètre doit être une valeur booléenne. PHP 7.0.0float
Le paramètre doit être un nombre à virgule flottante. PHP 7.0.0int
Le paramètre doit être un nombre entier. PHP 7.0.0string
Le paramètre doit être une chaîne de caractères. PHP 7.0.0iterable
Le paramètre doit être un tableau ou d'un instanceof Traversable. PHP 7.1.0