我有很多插件的文件夹。每个插件包含相同的名称类但不同的内容:
plugin01.php
class Plugin{
public function get($a){
return 'Plugin01 - '.$a;
}
}
plugin02.php
class Plugin{
public function get($a){
return 'Plugin02 - '.$a;
}
}
在 Plugins.php 中,我想加载这个插件。但不止一次。
class Plugins{
public static function load($id){
require $id.'.php';
$plugin = new Plugin();
return $plugin->get('test');
}
}
echo Plugins::load('plugin01')."\n";
echo Plugins::load('plugin02')."\n";
echo Plugins::load('plugin01');
预期结果:
Plugin01 - 测试
Plugin02 - 测试
Plugin01 - 测试
当前结果:
致命错误:无法重新声明类插件
这绝对行不通,因为我是redefining
类名和including
更多次相同的插件。
我的问题是,我可以只在函数范围内包含文件(包括在外部文件中定义的所有类),如果不会出现在函数之外?
我可以用 PHP 做到这一点,还是必须为每个类使用不同的名称?