PHP: Passer la fonction anonyme en argument
Est-il possible de passer d'une fonction anonyme comme un argument, et exécuter immédiatement, passant ainsi de la fonction return
valeur?
function myFunction(Array $data){
print_r($data);
}
myFunction(function(){
$data = array(
'fruit' => 'apple',
'vegetable' => 'broccoli',
'other' => 'canned soup');
return $data;
});
Cela déclenche une erreur due à la Array
type de conseil, de se plaindre d'un objet en cours de transmission. Bon, si je supprimer le type d'indice, il crache Closure Object
plutôt que les résultats que je veux. Je comprends que je suis techniquement passage d'un objet instance de Closure
à myFunction
cependant, je suis certain que j'ai vu ce que c'est possible d'ailleurs. Est-ce possible? Si oui, ce que je fais mal?
Pour les besoins de la présente discussion, je ne peux pas modifier la fonction pour laquelle je suis de passage à la fermeture.
tl;dr: Comment puis-je passer un anonyme déclaration de fonction en tant qu'argument, résultant dans la valeur de retour d'être passé comme argument.
PS: Si pas clair, la sortie désirée est:
Array
(
[fruit] => apple
[vegetable] => broccoli
[other] => canned soup
)
source d'informationauteur Dan Lugg
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas. Vous devez l'appeler en premier. Et depuis PHP ne supporte pas la fermeture de référencement pourtant, vous auriez à le stocker dans une variable de première:
Récemment, j'ai pu résoudre le même problème donc je vous poste mon code qui fonctionne comme prévu:
Espère que cela aide. Tout d'abord, je suis de la création de la fermeture, puis la fonction qui accepte de fermeture et d'argument et de faire appel à son intérieur et de retourner sa valeur. Assez simplement.
PS: Répondu merci pour cette réponses:
réponses
Vous êtes de passage de la fonction elle-même, pas les résultats que vous avez remarqué. Vous devez exécuter cette fonction immédiatement faire quelque chose comme ceci:
PHP ne supporte pas de telles choses, de sorte que vous êtes obligé d'affecter cette fonction à une variable et de l'exécuter: