Rumah  >  Artikel  >  pembangunan bahagian belakang  >  设计模式 - 如何用PHP实现一个类似插件中心的类?

设计模式 - 如何用PHP实现一个类似插件中心的类?

WBOY
WBOYasal
2016-06-06 20:24:581287semak imbas

有个php的config文件,里面用保存了一些类名

怎么写一个类,把这个config文件中的类new出来,同时去调用他们的run方法(这些类还不存在,后期再陆续补充,但是所有类都有一个run方法)?

我想给这些类的run方法传一个值,所有的这些run方法执行完成后,返回给我处理完的一个值,这种怎么弄?

这个需求,有点像插件一样,插件有些规则,有个插件中心的类,专门处理这些插件的调用,传值

回复内容:

有个php的config文件,里面用保存了一些类名

怎么写一个类,把这个config文件中的类new出来,同时去调用他们的run方法(这些类还不存在,后期再陆续补充,但是所有类都有一个run方法)?

我想给这些类的run方法传一个值,所有的这些run方法执行完成后,返回给我处理完的一个值,这种怎么弄?

这个需求,有点像插件一样,插件有些规则,有个插件中心的类,专门处理这些插件的调用,传值

你需要的是interfacespl_autoload_register,先设置一个interface,要求必须实现run方法,然后规定一个类命名规则比如必须Plugin结尾,以及类文件的加载规则比如必须都放置在plugin目录,然后通过spl_autoload_register注册加载逻辑即可

<code>interface IPlugin {
    public function run();
}

class DemoPlugin implements IPlugin {
    public function run(){
        //do sth
        return 'this is demo';
    }
}

spl_autoload_register(function($class){
    if($class是Plugin结尾){
        include 'plugin/' . $class . '.php';
    }
});</code>
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:数据存在(重复)检测Artikel seterusnya:PHP关于官方文档的一些问题