Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 来自不同文件的同名Cal函数_Php - Fatal编程技术网

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代码呢?