【发布时间】:2010-11-09 19:14:11
【问题描述】:
我为我们公司构建了一个 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);
}
}
当然,这给了我一个错误,因为我在定义函数时显然不能在函数名称中使用变量。关于如何绕过此或其他解决方案以仅在需要时包含功能的任何想法?
【问题讨论】: