首页 > 插件开发 > 正文

插件制作-基础使用和规范化开发

  • 更新时间:2024-04-19 12:53:56
  • 1616阅读
  • 0评论

上一篇我们了解了插件的一些必须文件和必要的成员函数,这一篇来了解下公共变量和公共类的使用,以及规范化的开发。

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方法。


到此为止,插件的基础使用也就讲述的差不多了,小伙伴们动手开发自己的插件吧,如果开发过程中遇到问题,可以在官方任意页面下留言哈!

发表评论

评论已关闭,请移步论坛发表,立即前往

0 位网友评论:

Top