1
0
mirror of https://github.com/ZeroDream-CN/PHPMC7 synced 2024-11-29 17:12:52 +08:00

Created 开发插件教程 (markdown)

Akkariin Meiko 2018-09-16 03:00:00 +08:00
parent 4ee129568a
commit 29f5876c6f

59
开发插件教程.md Normal file

@ -0,0 +1,59 @@
PHPMC 7 提供了插件接口,您可以在不修改程序的情况下增加自定义功能。
首先我们来了解插件的基础结构PHPMC 7 的所有插件均放在 `plugins/` 目录下。
### 插件存放结构
Web<br>
&nbsp;&nbsp;&nbsp;&nbsp;|—&nbsp;plugins<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|— com.example.test.php<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|— com.example.text.json<br>
`com.example.test.php` 插件的主体
`com.example.test.json` 插件的信息
### 快速开发一个简单的插件
_注意此插件仅用于测试目的是为了让您更容易了解插件运行机制可能会导致网站其他功能异常。_
本教程定义的插件名为 Tester。
在 plugins 下新建一个文件 com.myplugin.tester.json编辑并输入以下内容
```json
{
"main":"Tester",
"package":"com.myplugin.tester",
"author":"Akkariin",
"website":"https://www.akkariin.com/"
}
```
其中的 main 是插件的类名package 是包名用于防止插件重复author 是作者名website 是插件相关网站
然后我们开始编写插件,在 plugins 下新建另一个文件 com.myplugin.tester.php编辑并输入以下内容
```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` 负责注册插件事件,参数如下
1. `defaultActionEvent` 就是未定义 Action 时执行的事件,类型为 String
2. 插件的主类,也就是 Tester类型为 class
插件中的 `defaultActionEvent()` 会优先于系统内置的 `defaultActionEvent()` 事件执行,插件在执行完毕后必须返回一个 Boolean 值。
如果返回了 true那么此事件就会终止不会继续传递给系统执行如果返回了 false那么事件会继续交给系统执行。
其他 API 还在更新,敬请期待。