对于我的网站,我打算有几个附加组件。目前我能够获得用户需要的插件,但我不确定如何包含它们。
我已经构建了我的目录,使得插件都在一个名为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_init()
调用函数就可以来自任何插件。
我考虑过使用名为{{1}}的函数,但我想尽可能避免这种情况。对我的困境有什么建议吗?
答案 0 :(得分:0)
不幸的是,没有办法使用全局函数。
虽然如果你为插件函数使用类,那么你可以这样做:
foreach($plugins as $plugin) {
include "$plugin.php";
$klas = new $plugin();
$klas::method();
}
你的插件类:
class forums {
function forums() { ... }
function method() { ... }
}
以上代码未经测试,但几乎就是这个想法。
答案 1 :(得分:0)
Initiall你可以把这个数组合成一个,使用key作为include类型,如下所示:
$inits = array(
'forums' => 'plugins/forums/init.php',
'messages' => 'plugins/messages/init.php'
);
然后您可以根据需要进行迭代/调用。
if (I WANT TO RUN FORUM INIT)
{
include $inits['forums'];
initFunction();
}
就个人而言,我将其中的每一个都作为一个类并设置一个接口。然后,这些将实现一致的方法名称(在我的界面中声明),例如init()。