PHP en fonction de Rappel ne fonctionne pas sur les fonctions de l'objet
J'ai un tableau et souhaitez appliquer MySQLi->real_escape_string
sur chaque membre de la matrice de array_walk
mais ce n'est pas de travail:
array_walk($array, '$mysqli->real_escape_string');
Il donne cette erreur:
Avertissement: array_walk() s'attend à ce paramètre 2 pour être valide, le rappel, la fonction "$mysqli->real_escape_string' ne trouve pas ou invalide le nom de la fonction C:\wamp\www\ts.php sur la ligne 69
$mysqli
est un objet valide et fonctionne très bien si je ne $mysqli->real_escape_string('anything')
sur quoi que ce soit d'autre.
Ma Question: Est-il pas possible de passer de l'objet de ses fonctions de rappel ? Ou suis-je en train de faire quelque chose de mal.
IMPORTANT: je sais que je peux créer ma propre fonction de rappel et de mettre en œuvre $mysqli->real_escape_string en elle MAIS je veux savoir est-il pas possible d'utiliser la fonction de rappel qu'un objet ?
OriginalL'auteur WhatIsOpenID | 2010-10-10
Vous devez vous connecter pour publier un commentaire.
Comme vous pouvez le lire sur fonction php page, vous devez utiliser:
Warning: array_walk() expects parameter 2 to be a valid callback, non-static method mysqli::real_escape_string() cannot be called statically
C'était avec des citations et lors de l'utilisation de EXACTEMENT comment vous avez écrit, il dit:
Warning: mysqli::real_escape_string() expects exactly 1 parameter, 2 given
Avec array_map, il semble fonctionner (php.net/manual/en/function.array-map.php#63279)
Oui,
array_map
travaillé. Merci s'accoupler.OriginalL'auteur Aif
Si votre appel d'une méthode dans un objet que l'on doit passer dans un tableau, le premier élément étant l'objet /contexte, et la deuxième devrait être la méthode:
Petit exemple
ci-dessus est appelée une fonction et doit être appelé de la sorte:
array_walk($array, 'callback');
ci-dessus callback est appelée une méthode, son pratiquement le même qu'une fonction, mais parce que son sein d'une classe, il a un parent contexte, il doit donc être appelé de la sorte:
MySQLi est une bibliothèque orientée objet ainsi après que vous avez initialisé votre mysqli objet, vous devez appeler la "méthode" de la sorte:
Aussi comme mentionné ci-dessus,
array_walk
va à pied à la fois la clé et de la valeur à l'objet mysql sorcière provoquera exact de fuir, vous devez utiliserarray_map
à pied les valeurs:array_map($array, array($msqli, 'real_escape_string'));
OriginalL'auteur RobertPitt
array_walk permettra seulement d'une fonction définie par l'utilisateur pour être passé comme le rappel, pas un core de PHP de la fonction ou de la méthode. Pour ce faire, je voudrais essayer le suivant:
En passant la valeur par référence permet d'être modifiée dans la boucle foreach, qui permet à chaque membre de la matrice étant échappé.
Le problème, c'est avec array_walk comme il ne peut être utilisé avec une fonction définie par l'utilisateur ou de la méthode. Essayez array_map comme Aif suggère, en passant l'objet et le nom de la méthode comme un tableau que l'Aif suggère également.
OriginalL'auteur Jeremy