This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
PHPMC 7 提供了插件接口,您可以在不修改程序的情况下增加自定义功能。
首先, 我们来了解插件的基础结构, PHPMC 7 的所有插件均放在 plugins/
目录下。
插件存放结构
Web
|— plugins
|— com.example.test.php
|— com.example.text.json
com.example.test.php
插件的主体
com.example.test.json
插件的信息
快速开发一个简单的插件
注意:此插件仅用于测试,目的是为了让您更容易了解插件运行机制,可能会导致网站其他功能异常。
本教程定义的插件名为 Tester。
在 plugins 下新建一个文件 com.myplugin.tester.json, 编辑并输入以下内容
{
"main" : "Tester" ,
"package" : "com.myplugin.tester" ,
"author" : "Akkariin" ,
"website" : "https://www.akkariin.com/"
}
其中的 main 是插件的类名, package 是包名( 用于防止插件重复) , author 是作者名, website 是插件相关网站
然后我们开始编写插件,在 plugins 下新建另一个文件 com.myplugin.tester.php, 编辑并输入以下内容
<? php
class Tester {
public static function onload () {
global $Loader ;
$Loader -> Event -> registerClass ( "defaultActionEvent" , new Tester ()); // 注册 defaultActionEvent 事件
}
public function defaultActionEvent ( $test ) {
echo "你请求了以下参数:" . json_encode ( $test ); // 输出 GET 参数数组
return false ; // 不取消事件
}
}
简单介绍这个插件的作用:当你请求一个不存在的 action( 例如 /?action=2333
)时,将会执行此插件的 defaultActionEvent()
方法。
onload() 是一个静态方法,会在插件被加载时自动调用一次
$Loader->Event->registerClass
负责注册插件事件,参数如下
defaultActionEvent
就是未定义 Action 时执行的事件,类型为 String
插件的主类,也就是 Tester, 类型为 class
插件中的 defaultActionEvent()
会优先于系统内置的 defaultActionEvent()
事件执行,插件在执行完毕后必须返回一个 Boolean 值。
如果返回了 true, 那么此事件就会终止, 不会继续传递给系统执行, 如果返回了 false, 那么事件会继续交给系统执行。
其他 API 还在更新,敬请期待。