Я создал CMS для нашей компании, которая имеет огромное количество функций, многие из которых связаны с конкретными функциями, которые не используются на большинстве сайтов, для которых мы используем CMS.Моя цель, поэтому, состоит в том, чтобы включать скрипт функции только тогда, когда она необходима (когда функция вызывается).
Сейчас я просто вызываю каждую функцию как обычно, требуя файл, в котором находится фактическийнаходится сценарий функции, а затем вызывается вторая функция (то же имя, что и у функции, но с префиксом подчеркивания), которая содержит фактический сценарий функции.Например:
function foo($a,$b) {
require_once "funtions-foo.php";
return _foo($a,$b);
}
Это, однако, кажется мне немного повторяющимся.То, что я ищу, - это способ «перехватить» вызов функции, и, если его имя находится в массиве «включенных» функций, я включу правильный файл и вызову функцию.Например:
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);
}
}
Здесь я предполагаю, что функция 'catch_function_call' может каким-то образом перехватывать при вызове функции.Однако, поскольку я не знаю такой функции, моей второй мыслью было просто определить каждую из «включенных» функций с помощью переменных.Например:
$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);
}
}
Конечно, это дает мне ошибку, поскольку я, очевидно, не могу использовать переменную в имени функции при ее определении.Любые мысли о том, как обойти это или другие решения для включения только функции, когда это необходимо?