J'ai créé un CMS pour notre société qui possède un grand nombre de fonctions, dont beaucoup sont liées à des fonctionnalités spécifiques qui ne sont pas utilisées sur la plupart des sites pour lesquels nous utilisons le CMS. Mon but, alors, est d'inclure seulement le script d'une fonction quand c'est nécessaire (quand la fonction est appelée).Est-il possible d'utiliser une variable lors de la définition du nom d'une fonction PHP?
Pour le moment, j'appelle simplement chaque fonction normalement, en demandant le fichier où se trouve le script de la fonction, puis en appelant une deuxième fonction (le même nom que la fonction, mais avec un préfixe de soulignement) qui contient le script réel de la fonction. Par exemple:
function foo($a,$b) {
require_once "funtions-foo.php";
return _foo($a,$b);
}
Ceci, cependant, me semble un peu répétitif. Ce que je cherche est un moyen de 'attraper' un appel de fonctions et, si son nom est dans un tableau de fonctions 'incluses', j'inclurai le bon fichier et j'appellerai la fonction. Par exemple:
catch_function_call($function,$arg1,$arg2) {
$array = array(
'foo' => 'functions-foo.php',
'bar' => 'functions-bar.php'
);
if($array[$function]) {
require_once $array[$function];
return $function($arg1,$arg2);
}
}
Là, je pars du principe que la fonction « catch_function_call » peut attraper une certaine façon lorsqu'une fonction est appelée. Comme je ne connais pas une telle fonction, cependant, ma deuxième pensée était de simplement définir chacune des fonctions 'incluses' en utilisant des variables. Par exemple:
$array = array(
'foo' => 'functions-foo.php',
'bar' => 'functions-bar.php'
);
foreach($array as $function => $file) {
function $function($arg1,$arg2) {
$_function = "_".$function;
require_once $file;
return $_function($arg1,$arg2);
}
}
Bien sûr, cela me donne une erreur que je ne peux pas apparemment utiliser une variable au nom d'une fonction lors de la définition elle. Des idées sur la façon de contourner cette ou d'autres solutions pour inclure seulement une fonction lorsque cela est nécessaire?
Cela semble probablement être la meilleure solution, mais il semblerait que cela nécessiterait de réécrire tous les appels de fonction, ce qui représente probablement plus de travail que de valeur. Pourtant, bon à savoir à ce sujet pour le développement futur. – Charlie