我正在使用下面的代码来自动加载和声明类,因此我只需要将类文件放在名为 classes 的文件夹中。spl_autoload_regsister() 中的部分对您来说似乎是不必要的,但它需要作为 WordPress 插件工作而不会出错。
它使用eval()
,我已经看到很多网页谈论使用eval()
是不好的,并且会造成安全漏洞。那么这怎么可能是危险的呢?
$strDirPath = dirname(__FILE__) . '\\classes\\';
$arrClassFiles = array_map(create_function( '$a', 'return basename($a, ".php");' ), glob($strDirPath . '*.php'));
spl_autoload_register(
create_function('$class_name', '
global $arrClassFiles, $strDirPath;
if (in_array($class_name, $arrClassFiles))
include($strDirPath . $class_name . ".php");' )
);
foreach ($arrClassFiles as $strClassName) {
$strClassName_alpha = $strClassName . "_Alpha";
eval("class $strClassName_alpha extends $strClassName {};");
}
print_r(get_declared_classes());
也许,有人可以在文件夹中放一个php代码的文件名?但我认为它不会危及系统。