La función de callback de PHP no funciona en funciones de objeto

Tengo una matriz y quiero aplicar MySQLi->real_escape_string en todos los miembros de la matriz a través de array_walk pero esto no funciona:

 array_walk($array, '$mysqli->real_escape_string'); 

Da este error:

Advertencia: array_walk () espera que el parámetro 2 sea una callback válida, la función ‘$ mysqli-> real_escape_string’ no se encuentra o el nombre de la función no es válido en C: \ wamp \ www \ ts.php en la línea 69

$mysqli es un objeto válido y funciona bien si hago $mysqli->real_escape_string('anything') en cualquier otra cosa.

Mi pregunta: ¿No es posible pasar las funciones del objeto como callback? O estoy haciendo algo mal


IMPORTANTE: Sé que puedo crear mi propia función de callback e implementar $ mysqli-> real_escape_string en ella, PERO quiero saber si no es posible usar la callback como función de un objeto.

Como puede leer en la página de callback de php , deberá utilizar:

 # produces an error array_walk($array, array($msqli, 'real_escape_string')); array_map($array, array($msqli, 'real_escape_string')); 

Si llama a un método dentro de un objeto, debe pasar en una matriz, el primer elemento es el objeto / contexto y luego el segundo:

Pequeño ejemplo

 function callback() { //blah } 

lo anterior se llama función y debería llamarse así: array_walk($array, 'callback');

 class object() { public function callback() { } } 

la callback anterior se denomina método, es prácticamente lo mismo que una función, pero como está dentro de una clase, tiene un contexto principal, por lo que debe llamarse así:

 $object = new object(); array_walk($array, array($object , 'callback')); 

MySQLi es una biblioteca orientada a objetos, así que después de que haya inicializado su objeto mysqli, debería llamar al “método” de la siguiente manera:

 array_walk($array, array($msqli, 'real_escape_string')); 

También como se mencionó anteriormente, array_walk caminará tanto la clave como el valor en el objeto mysql que causará en el escape exacto, debe usar array_map para caminar solo los valores:

array_map($array, array($msqli, 'real_escape_string'));

array_walk solo permitirá que una función definida por el usuario se pase como callback, no una función o método de PHP principal. Para ello intentaría lo siguiente:

 foreach($array as &$value) { $value = $mysqli->real_escape_string($value); } 

Al pasar el valor por referencia, se puede modificar dentro del bucle foreach, lo que hace que cada miembro de la matriz se escape.