Php 来自不同文件的同名Cal函数
对于我的网站,我打算有几个附加组件。目前,我能够获得用户需要的插件,但我不确定如何包含它们 我构建了我的目录,这样插件都在一个名为Php 来自不同文件的同名Cal函数,php,Php,对于我的网站,我打算有几个附加组件。目前,我能够获得用户需要的插件,但我不确定如何包含它们 我构建了我的目录,这样插件都在一个名为plugins的目录中,然后每个插件都在该目录下的一个目录中,然后每个插件目录都有一个我想要调用的init.php文件。使用扫描目录的生成数组,如下所示: Array([2]=>forums[3]=>mesages[4]=>profile[5]=>clock) 以及相应的目录数组: Array ( [2] => plugins/forums/init.php [
plugins
的目录中,然后每个插件都在该目录下的一个目录中,然后每个插件目录都有一个我想要调用的init.php
文件。使用扫描目录的生成数组,如下所示:
Array([2]=>forums[3]=>mesages[4]=>profile[5]=>clock)
以及相应的目录数组:
Array (
[2] => plugins/forums/init.php
[3] => plugins/mesages/init.php
[4] => plugins/profile/init.php
[5] => plugins/something/init.php
)
我的问题是如何调用这些init.php
函数。如果我要通过数组执行foreach
,并以某种方式require()
它们,那么从init.php
调用函数就可以从任何插件中调用
我曾考虑过使用类似于
clock\u init()
的函数,但如果可能的话,我希望避免这样做。对我的困境有什么建议吗?不幸的是,没有办法使用全局函数
虽然如果您将类用于插件函数,那么您可以执行以下操作:
foreach($plugins as $plugin) {
include "$plugin.php";
$klas = new $plugin();
$klas::method();
}
您的插件类:
class forums {
function forums() { ... }
function method() { ... }
}
上面的代码未经测试,但基本上就是这个想法。initial您可以将此数组组合成一个数组,使用键作为包含类型,如下所示:
$inits = array(
'forums' => 'plugins/forums/init.php',
'messages' => 'plugins/messages/init.php'
);
然后,您可以根据需要迭代/调用任何对象
if (I WANT TO RUN FORUM INIT)
{
include $inits['forums'];
initFunction();
}
就我个人而言,我会将它们作为一个类,并设置一个接口。然后,它们将实现一个一致的方法名(在我的接口中声明),如init()
当包含init脚本时,为什么不执行init代码呢?