php: puis-je créer et appeler une fonction à l'intérieur d'une méthode de classe?
est-il possible de créer une fonction à l'intérieur d'une méthode de classe et comment dois-je l'appeler ?
i.e.
class Foo { function bar($attr) { if($attr == 1) { return "call function do_something_with_attr($attr)"; } else { return $attr; } function do_something_with_attr($atr) { do something ... ... return $output; } } }
merci d'avance
8
demandé sur
m1k3y3
2011-01-17 02:55:00
3 réponses
cela peut être fait, mais puisque les fonctions sont définies dans la portée globale, cela résultera en une erreur si la méthode est appelée deux fois puisque le moteur PHP considérera la fonction à redéfinir lors du second appel.
6
répondu
Ignacio Vazquez-Abrams
2011-01-17 00:01:32
Oui. Depuis PHP 5.3, vous pouvez utiliser fonctions anonymes pour ceci:
class Foo
{
function bar($attr)
{
$do_something_with_attr = function($atr)
{
//do something
//...
//...
$output = $atr * 2;
return $output;
};
if ($attr == 1)
{
return $do_something_with_attr($attr);
}
else
{
return $attr;
}
}
}
4
répondu
Russell Hankins
2016-08-30 16:00:30
Utilisez "function_exists" pour éviter les erreurs.
class Foo
{
function bar($attr)
{
if (!function_exists("do_something_with_attr")){
function do_something_with_attr($atr)
{
do something
...
...
return $output;
}
}
if($attr == 1)
{
return do_something_with_attr($attr);
}
else
{
return $attr;
}
}
}
1
répondu
joan16v
2014-07-10 10:05:25