上一篇我们了解了插件的一些必须文件和必要的成员函数,这一篇来了解下公共变量和公共类的使用,以及规范化的开发。
rpcms为了开发者快速的接入系统,也是为了让开发者可以快速上手,希望开发者可以有一个良好的开发习惯。
系统在plugin.class.php中封装好有常用的功能函数和类变量,开发者可以直接继承使用,空间命名:rp/plugin。其中预设有公共方法和变量有:
1、assign()方法:模板变量赋值
如:$this->assign('option1','这里是option1变量')
2、display()方法:模板渲染
如:$this->display('temp')
该方法使用的时候无需带上插件的名称,系统会自动获取所用插件,如上述使用,系统将会获取plugin_demo文件夹下的temp.php并渲染输出。
3、checkTemp():判断当前模板主题文件是否存在
如:$this->checkTemp('plugin_temp')
若当前模板使用的是defaults,将会判断defaults文件夹下的plugin_temp.php文件是否存在,并返回true/false。
4、setConfig():插件配置数据的保存
如:$this->setConfig('plugin_demo',array('option1'=>'这里是option1变量'))
插件的配置可以通过此方法提交保存,当然还是推荐使用Setting.class.php配置文件,系统会自动判断并保存配置。
5、getConfig():获取插件配置数据
如:$this->getConfig()
当无参数时,获取的是当前插件的配置;当有参数时,获取的是指定插件的配置
6、doPlugin():运行指定插件的指定方法,可以传参数
如:$this->doPlugin('plugin_demo2','vip','douser',array('userId'=>1))
此方法将会调用plugin_demo2插件的vip控制器的douser方法,并传数组参数array('userId'=>1)
插件名称是必填参数,控制器和方法默认index,参数非必填。
7、checkFormAdmin():验证是否为后台操作
8、App:同主文件$App变量
9、webConfig:同模板的webConfig配置
10、Db:同数据库文件Db,使用方法:$this->Db::name()
11、Db_prefix:数据库前缀
12、pluginName:当前插件的文件夹名称,即插件ID
13、pluginPath:当前插件相对根目录的路径,如:/plugin/plugin_demo
14、admin:管理员数据,需调用checkFormAdmin()方法,并验证通过后获取
接下来,下面分解下插件开发的步骤:
1、准备author.json和Index.class.php文件夹,如:
<?php namespace plugin\plugin_demo; use rp\Plugin; class Index extends Plugin{ /*插件安装*/ public function install(){ $this->checkFormAdmin(); } /*插件卸载*/ public function uninstall(){ $this->checkFormAdmin(); } /*插件升级,非必要*/ public function update(){ $this->checkFormAdmin(); }
在install方法中定义插件安装的操作,如:数据库的一些操作
在uninstall方法中定义插件卸载的操作,如:插件数据库的删除
在update方法中定义插件升级更新的操作,如:插件数据库的调整
2、使用配置文件Setting.class.php,推荐使用此方法配置插件数据
如果插件涉及到功能的配置,可以新建一个Setting.class.php文件,同样,它也可以继承rpplugin公共类
<?php namespace plugin\plugin_demo; use rp\Plugin; class Setting extends Plugin{ public function index(){ $config=$this->getConfig(); echo '<div style="width:100%;background:#fff;position: relative;"> <form class="me_form" action="" method="post"> <div class="me_input big"><label>设置项一</label><input type="text" name="setName1" value="'.(isset($config['setName1']) ? $config['setName1'] : '').'"></div> <input type="hidden" name="plugin" value="plugin_demo"/> <input type="hidden" name="sendpost" value="1"/> <button type="sumbit" class="rp_btn success sendpost">保存设置</button> </form> </div>'; } }
可以直接echo表单HTML,也可以display模板渲染。
<input type="hidden" name="sendpost" value="1"/>
该变量为系统标识字段,请勿更改value,当然也不能没有此参数。
3、挂载钩子
若插件使用到钩子功能,只需要在Index.class.php文件中加入addHook()方法,系统会在插件安装的时候自动获取此方法中预设的钩子。
public function addHook(){ $data=array( 'plugin_demo_index'=>'plugin\plugin_demo\index::show', ); return $data; }
如上配置表示,定义一个自定义的钩子,名称为plugin_demo_index,该钩子对应的方法时plugin_demo插件的Index.class.php控制器的show方法。
到此为止,插件的基础使用也就讲述的差不多了,小伙伴们动手开发自己的插件吧,如果开发过程中遇到问题,可以在官方任意页面下留言哈!
发表评论
评论已关闭,请移步论坛发表,立即前往