插件开发原理

[!WARNING|style:callout|label:必须实现插件接口|iconVisibility:default|labelVisibility:default|className:block-warning] 1、所有的插件类必须实现 PHPCreeper\Kernel\Slot\PluginInterface 接口
2、所有的插件类必须定义一个静态的 install() 接口,目的是让引擎自动调用inject()接口

如果爬山虎内置的功能无法满足业务需求,完全可以通过开发插件来扩展或丰富应用功能, 爬山虎插件开发原理是基于PHPCreeper自带的inject()接口实现的。

接口inject()

1、该接口用来给PHPCreeper实例注册一个功能函数或类方法,类似于延迟动态绑定。
2、该接口有两个参数:第一个参数是类方法名称,第二个参数是一个匿名函数, 有意思的是该匿名函数内$this总是指向当前PHPCreeper实例,如此我们就能很方便的操作PHPCreeper实例的方法。

注册插件

$phpcreeper->inject('get', function($url){
    //实际项目中为了便于维护,最好将匿名函数内的代码封装成插件类如:MyHttpClient
    return file_get_contents($url);
});

安装插件

使用installPlugin()方法来安装插件

PHPCreeper::installPlugin(\PHPCreeperApp\Plugin\MyHttpClient::class);

使用插件

$downloader->get('https://www.baidu.com');

results matching ""

    No results matching ""