企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
为了防止NewIDC的插件因不规范的情况而导致无法正常使用,开发时请遵守以下规则: 1. 插件的定义应为类且实现(implements) `NewIDC\Plugin\Plugin` 。 2. 插件必须规定命名空间,定好后一般不得修改,否则会被识别成新插件。 3. 插件info方法中,应返回以下格式的数组: ``` ['name'=>'插件名称','slug'=>'插件别名','version'=>'插件版本','description'=>'插件说明'] ``` 没有name值的情况下,系统自动使用带命名空间的类名作为名称;没有slug值的情况下,系统自动将完整类名(含命名空间)转换为带下划线的小写字符串(如NewIDC\Directadmin\Plugin转为newidc_directadmin_plugin);没有version和description的情况下,系统将不显示版本号和描述。注意,slug不得与其他插件相同,否则会造成冲突! 4. 插件hook方法中,应返回以下格式的数组: ``` [ 'demo'=>[$this,'demo'], 'test'=>'test', ] ``` 其中,键名为hook名,键值为callable类型,相当于call_user_func的第一个参数。 5. 插件必须主动注册,调用 PluginManager::register($this) 即可。一般情况下,需要创建服务提供者(参看Laravel手册),在服务提供者的boot方法中注册插件。未注册的插件无法调用钩子,也不会出现在插件列表中。 6. 插件允许调用/继承其他类,但是不得改变info/hook方法的意义,否则会导致插件失效或工作不正常。 7. 插件应符合 Laravel 扩展包开发规范,应符合 composer 开发规范。 8. 插件原则上只允许操作 options 表(通过setOption/getOption函数),并且key名不得使用与系统设置或其他插件相冲突的名称,建议命名格式:plugin_name_key,例:plugin_test_ena。 待续...