Question

Ok, je suis à la recherche en utilisant create_function pour ce que je dois faire, et je ne vois pas un moyen de définir les valeurs des paramètres par défaut avec elle. Est-ce possible? Si oui, quelle serait la meilleure approche pour la saisie des params dans la fonction create_function en php? Peut-être en utilisant addslashes?

Eh bien, par exemple, j'ai une fonction comme ceci:

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, alors comment pourrais-je utiliser create_function pour faire la même chose, en ajoutant les paramètres et leurs valeurs par défaut?

La chose est, les paramètres proviennent d'un fichier texte, ainsi que la fonction elle-même. Alors, se demandant sur la meilleure approche pour cela en utilisant create_function et comment exactement la chaîne doit être analysée.

Merci:)

Était-ce utile?

La solution

Considérant une fonction créée avec create_function cette façon:

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

Vous pouvez l'appeler comme ceci:

$func('World');

Et vous obtiendrez:

Hello, World!


Maintenant, ayant une valeur par défaut pour un paramètre, le code pourrait ressembler à ceci:

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

Note: Je n'ajoute la valeur par défaut pour le paramètre, dans le premier argument passé à create_function

.

Et puis, appeler la nouvelle fonction:

$func();

Je reçois encore:

Hello, World!

i.e.. la valeur par défaut pour le paramètre a été utilisé.


Ainsi, les valeurs par défaut des paramètres travailler avec create_function comme ils le font pour d'autres fonctions: il vous suffit de mettre la valeur par défaut dans la liste des paramètres

.

Après cela, sur la façon de créer la chaîne contenant les paramètres et leurs valeurs ... Quelques concaténations à cordes, je suppose, sans oublier d'échapper à ce qui devrait être échappé.

Autres conseils

Voulez-vous créer une fonction anonyme? Le create_function est utilisé pour créer les fonctions anonymes. Sinon, vous devez créer fonctionner normalement comme:

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

Si vous voulez utiliser le create_function, voici le prototype:

$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

Je vais avoir le même problème, en essayant de passer un tableau à une fonction de rappel créé ... Je pense que je vais créer une variable temporaire ... Il est laid, mais je dois mieux faire alors me torturer avec des barres obliques, mon code est déjà assez cryptique la façon dont il est maintenant.

Alors, pour illustrer:

global $tmp_someArray;
$tmp_someArray = $someArray;
$myCallback = create_function(
    '$arg1',
    '
          global $tmp_someArray;
          // do stuff with $tmp_someArray and $arg1....
          return($something);
    '
);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top