# 编写规则
## 类注释(元信息)
头部注释格式如下:
> /**
> * 插件描述
> *
> * @display 插件显示名称
> * @package 插件名称(只能由英文、数字和下划线构成)
> * @author 插件作者
> * @version 插件版本
> * @link 链接
> */
至少,@package不能缺,否则系统将不会将其识别为插件
从 v0.3 开始,您必须把该注释写在 class xxxPlugin (类定义)的上方,否则可能会导致获取不到注释。
## 内容(v0.3后)
插件主文件应为一个类,类名为xxxPlugin,其中xxx为插件名称,与@package对应。该必须继承Core\Plugin\Plugin。具体请看插件示例。
注册钩子应该在register方法中进行,该方法为抽象方法,需要在插件内实现。注册时调用$this->manager->register,该方法有两个参数,第一个参数是钩子名,第二个参数为可调用对象(callable,call_user_func能调用的),具体可以参照插件示例。具体的钩子名称和用途参照[Hook列表](947275)
当插件display字段不存在时,后台将会显示package作为插件名称
**注意:如果类名不正确或没有继承Plugin,则不会被系统识别为插件。**
# 插件示例
~~~
<?php
use Core\Plugin\Plugin;
/**
* 这是一个用于测试的小插件,绑定了demo钩子,可以在主题中触发钩子以便测试
*
* @display 测试插件
* @package test
* @author TarBlog
* @version 0.1
* @link https://www.tarblog.cn
*/
class TestPlugin extends Plugin
{
/**
* @inheritDoc
*/
public function register()
{
$this->manager->register('demo', function () {
echo '测试';
});
$this->manager->register('demo', [$this, 'demo']);
}
public function demo()
{
echo '这也是测试';
}
}
~~~