create_function con i valori dei parametri di default?
-
02-10-2019 - |
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:)
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);
'
);