verificar que metodo method_exist method funcion existe exist call_user_func_array call_user_func php

php - que - Comportamiento de is_callable en ''/''



php is method exist (1)

Como un trabajo alrededor usted podría intentar esto:

$name = ''/''; $actual = null; if (is_callable($name, false, $actual) && $name === $actual) { // Method is actually callable }

Mi colega y yo nos hemos encontrado con un comportamiento bastante extraño. Nuestros entornos son Ubuntu 11.10, PHP 5.3.6-13ubuntu3.6 con Suhosin-Patch y Windows 7 PHP 5.3.5.

En nuestras máquinas, el siguiente código se ejecuta como uno esperaría:

<?php function t() { } var_dump(is_callable(''/''));

Con la salida:

bool(false)

En uno de nuestros servidores, CentOS versión 5.7 (Final), PHP 5.3.8, el mismo código produce:

bool(true)

Sin la función t() , is_callable funciona como se esperaba. Tenga en cuenta que is_function comporta de la misma forma que is_callable en estas pruebas.

¿Alguien tiene alguna idea de lo que podría estar causando esto?

Editar :

Parece que solo ocurre cuando una función llamada t está presente, cualquier otra cosa, como b , c , etc., y la salida es la esperada.

Editar - probando con más personajes :

<?php function t() { } foreach(str_split(''/abcdefghijkmnopqrstuvwxyz023456789ABCDEFGHIJKLMNOPQRSTUVXYZ!@#$%^&*()-_+=`~;:[]{}//|/'"?.>,<'') as $character) { if (is_callable($character)) var_dump($character, is_callable($character)); }

Da salida a lo siguiente en el servidor:

string(1) "/" bool(true) string(1) "t" bool(true) string(1) "T" bool(true) string(1) "_" // gettext bool(true) string(1) ":" // With the t() function undefined, this remains callable on the server bool(true)

En nuestros entornos, la salida es la esperada:

string(1) "t" bool(true) string(1) "T" bool(true)

Editar - más información sobre el comentario de cbuckley :

<?php ini_set(''display_errors'', 1); error_reporting(E_ALL); function t() { } $v = ''/''; $v();

Produce salida: Call to undefined function /()