Pregunta

Bien, estoy buscando en el uso de create_function por lo que tengo que hacer, y no veo una manera de definir valores de los parámetros por defecto con él. es posible? Si es así, ¿cuál sería el mejor método para introducir los parametros en la función create_function en php? Tal vez usando addslashes?

Bueno, por ejemplo, que tiene una función de este modo:

function testing($param1 = 'blah', $param2 = array())
{
    if($param1 == 'blah')
        return $param1;
    else
    {
        $notblah = '';
        if (count($param2) >= 1)
        {
            foreach($param2 as $param)
                $notblah .= $param;

            return $notblah;
        }
        else
            return 'empty';
    }
}

Ok, así que ¿cómo iba a utilizar create_function a hacer lo mismo, añadiendo los parámetros y sus valores por defecto?

La cosa es, los parámetros son procedentes de un archivo de texto, así como la propia función. Por lo tanto, se pregunta sobre el mejor enfoque para este uso create_function y cómo exactamente con la cadena debe ser analizada.

Gracias:)

¿Fue útil?

Solución

Teniendo en cuenta una función creada con create_function de esta manera:

$func = create_function('$who', 'echo "Hello, $who!";');

Se le puede llamar así:

$func('World');

Y obtendrá:

Hello, World!


Ahora, con un valor predeterminado para un parámetro, el código podría tener este aspecto:

$func = create_function('$who="World"', 'echo "Hello, $who!";');

Nota: Sólo añade el valor por defecto para el parámetro, en el primer argumento pasado a create_function

.

Y, a continuación, llamar a la nueva función:

$func();

Todavía consigo:

Hello, World!

es decir. el valor por defecto para el parámetro se ha utilizado.


Por lo tanto, los valores por defecto para los parámetros de trabajar con create_function igual que lo hacen para otras funciones: sólo hay que poner el valor por defecto en la lista de parámetros

.

Después de eso, sobre la manera de crear la cadena que contiene los parámetros y sus valores ... Un par de concatenaciones de cadenas, supongo, sin olvidar a escapar de lo que se debe escapar.

Otros consejos

¿Quieres crear una función anónima? El create_function se utiliza para crear las funciones anónimas. De lo contrario, es necesario crear funcionar normalmente como:

function name($parms)
{
   // your code here
}

Si desea utilizar el create_function, aquí es el prototipo:

$newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
echo "New anonymous function: $newfunc\n";
echo $newfunc(2, M_E) . "\n";
// outputs
// New anonymous function: lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599

Estoy teniendo el mismo problema, tratando de pasar una matriz a una función de devolución de llamada creado ... creo que voy a crear una variable temporal ... Es feo, pero tengo mejor que hacer a continuación torturarme con barras, mi código ya está lo suficientemente críptico la forma en que está ahora.

Por lo tanto, para ilustrar:

global $tmp_someArray;
$tmp_someArray = $someArray;
$myCallback = create_function(
    '$arg1',
    '
          global $tmp_someArray;
          // do stuff with $tmp_someArray and $arg1....
          return($something);
    '
);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top