Domanda

Ok, sto esaminando usando create_function per quello che ho bisogno di fare, e non vedo un modo per definire i valori dei parametri di default con esso. È possibile? Se così fosse, quale sarebbe l'approccio migliore per l'immissione dei params nella funzione create_function in php? Forse usando addslashes?

Beh, per esempio, ho una funzione in questo 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, quindi come potrei usare create_function per fare la stessa cosa, aggiungendo i parametri ed i loro valori di default?

Il fatto è che i parametri sono provenienti da un file di testo, così come la funzione stessa. Così, chiedendosi l'approccio migliore per questo utilizzo create_function e come esattamente la stringa dovrebbe essere analizzato.

Grazie:)

È stato utile?

Soluzione

Considerando una funzione creata con create_function in questo modo:

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

È possibile chiamare in questo modo:

$func('World');

E avrai:

Hello, World!


Ora, avendo un valore predefinito per un parametro, il codice potrebbe essere la seguente:

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

Nota: Ho solo aggiunto il valore predefinito per il parametro, nel primo argomento passato a create_function

.

E, poi, chiamando la nuova funzione:

$func();

Ho ancora:

Hello, World!

vale a dire. è stato utilizzato il valore predefinito per il parametro.


Quindi, i valori di default per i parametri lavorare con create_function proprio come fanno per altre funzioni: è sufficiente mettere il valore di default nella lista dei parametri

.

Dopo di che, su come creare la stringa contenente i parametri ed i loro valori ... Un paio di concatenazioni di stringhe, suppongo, senza dimenticare di sfuggire ciò che dovrebbe essere sfuggito.

Altri suggerimenti

Si desidera creare una funzione anonima? Il create_function viene utilizzato per creare le funzioni anonime. In caso contrario, è necessario creare la funzione normalmente come:

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

Se si desidera utilizzare il create_function, qui è il 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

Sto avendo lo stesso problema, cercando di passare un array a una funzione di callback creato ... Penso che creerò una variabile temporanea ... E 'brutto, ma devo meglio da fare poi torturarmi con barre, il mio codice è già abbastanza criptico il modo in cui è oggi.

Quindi, per illustrare:

global $tmp_someArray;
$tmp_someArray = $someArray;
$myCallback = create_function(
    '$arg1',
    '
          global $tmp_someArray;
          // do stuff with $tmp_someArray and $arg1....
          return($something);
    '
);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top