本篇文章给大家谈谈开发插件及教程,以及插件开发文档对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

discuz教程:插件开发经验之如何运用 C::t 方法

抽点时间讲解一下C::t方法的简单使用。

一、C::t方法的好处:一是对象清楚,二是对闷空游形参格式化处理,三是可集中SQL语句,利于维护,四是安全性更高。

二、具体用法,看下面的例子

假设有一个名为test的插件,其中关于名为tbname的数据表操作的SQL

旧式写法

a.inc.php

?php

……

$query = DB::query(‘select * from ‘.DB::table(‘tbname’).’ where id=’.$id);

while($v = DB::fetch($query)){

……

}

……

?

改造为C::t如下

a.inc.php

?php

……

$query = C::t(‘#test#tbname’)-fetch_all($id);

foreach($query as $key = $value){

或者将上面的两行变为一行,以减少行数,如下

foreach(C::t(‘#test#tbname’)-fetch_all($id) as $key = $value){

……

}

……

?

再新建一个文件夹名为table,放在插件根目录下,在table中创建一个名为table_tbname.php的类文件(详见技术文库的相关说明),该文件的代码框架如下

table_tbname.php

?php

if (!defined(‘IN_DISCUZ’)) {

exit(‘Aecsse Denied’);

}

class table_tbname extends discuz_table{

public function __construct() {

$this-_table = ‘tbname’;

$this-_pk = ‘id’;

parent::__construct();

}

/*————在此处构造N多的自定义函数,本例中自定义的函数如下————-*/

public function fetch_all($id){

return DB::fetch_all(‘select * from %t where id=%d’,array($this-_table,$id));

}

}

?

C::t的运用有很多变化,但万变不离其宗,基本骨架就是上面的样子。

注意:

1、自定义函数中有一个同名函数名fetch_all,虽然名字相同,但内涵不同。本例比较特殊,实际自定义函数名称你可以随便起,例如public

function

ldsjglfdjs($id),不一定非要像技术文库要求那样规则命名,当然,规则命名更易于辨认理解维护

2、SQL中应当用格式化语句书写,以保障安全性,其中的%t代表了对数据表名的格式化,%d代表了对%id的格式化,其中的含义请查询技术文库”源DB类的改进”,以了解掌握都有哪些格式符及其意义并加以运用。这里要特别注意%s和%i的区别,涉及安全处理问题

3、虽然不是必须,但我仍建议并强调,以数组形参的形式作为DB层封装函数的第二参数(如果该函数有此参数的话),例如上例中的

DB::fetch_all(SQL,array(第一形参,第二形参,…)),某些DB层封装的函数对于有无$arg这个数组参数有着不同的执行过

程,将会影响对该参数中的变量是否进行安全过滤的行为

4、SQL中的格式符一定要和数组形参中的变量一一对应,不能颠倒

5、不提倡旧式的SQL写法,如DB::fetch_all(‘select

*

from

‘.DB::table(‘tbname’).’

where

id=’.$id),原因见上面的3

6、虽然不是必须,但C::t方法中自定义函数内最好不要使用诸如$_GET、$_POST之类的全局变量,应在C::t之前赋值后传入,否则,例如在DB::query中使用,如不进行过滤,其安全性将难以保障

7、大多数被DB封装的常用数据库操作函数,其参数都将被做安全处理,因此要注意,虽然不是必须避免重复过滤,但应考虑执行效率问题。

8、注意注意再注意,由于大多数被DB封装的常用数据库操作函数都要调用内部query函数,相当于在外部直接使用DB::query,而该函数有个特例情况,就是上面3所说,因此特别要考虑有无数组形参,进而加固安全蚂销性

9、尽量将SQL集中放在C::t方法的类文件中,亏圆避免在应用层等其他文件中使用SQL,这样能使对象更清晰规范方便维护

官方在source/class/table中已经内置了很多C::t方法,假设在插件设计时所用的方法是官方所没有的,而官方已创建了一个同名类文件,

这时怎么办?那就按上面例子所示,自己创建一个同名类文件就行了,但应用层一定要用C::t(‘#插件标识符#不带前缀的表名’)来调用,而不是

C::t(‘不带前缀的表名’)这种方式

闲暇之余多看看source/class/discuz中的discuz_database.php和dizcuz_table.php这两个重要文件,烂熟其中被DB封装的常用函数的执行原理和机制,对自如运用C::t和加强安全认识有好处

小编极力推荐:

网页制作编辑器大全

开发插件及教程(插件开发文档)插图

如何用C#开发Excel扩展插件

对Excel插件的开发开发插件及教程,目的是在键销腔工具栏中添加一个外部程序开发插件及教程,点击这个外部程序,可以将当稿衫前的Sheet数据获取到并保存到另外一个sheet里面;主要注意两方面开发插件及教程

一、Excel插件外部程序建立向导斗咐,具体步骤是开发插件及教程

Eclipse经典开发教程插件安装

Eclipse 可以与任何一种IDE匹敌 甚至比它们还要好 Eclipse 有代码补足 代码模板的功能 以及对重构 Ant CVS 和 JUnit 的支持 除了这些基本功能之外 Eclipse 的优点之一就是它的源代码是开放的 可扩展性很好 可以扩充很多插件 开源插件和商业插件都可以用来扩充 Eclipse 如果用户需要基本的 Eclipse IDE 所不具备的特性 一般都可以找到需要的插件 在大部分情况下 用户都可以找到免费的插件

由于 Eclipse 的流行性和开源特性 它已经在 IDE 领域成为一把尖刀 一方面 Eclipse在一步一步完善自己的功能 另一方面 Eclipse正在大刀阔斧抢占IDE开发的应用领域 数据表明Eclipse是现在最流行的Java开发环境之一 为了更好的使用Eclipse进行开发 就有必要了解Eclipse插件的机制 以及如何安装和使用插件

Eclipse插件

Eclipse 是一个已经完全设计好的平台 是用于构建和集成应用的开发工具 平台本身不会提供大量的最终用户功能 平台的价值在于它的促进作用 根据插件模型来快速开发集成功能部件

平台本身是内置在插件层中的 每个插件定义下层插件的扩展 同时对自己的扩展进行进一步的定制 每种类型的扩展允许插件开发者向基本工具平台添加各种功能 每个插件的部件(例如文件和其他数据)由公共平台资源来协调

Eclipse最有魅力的地方就是它的插件体系结构 由于有了插件 Eclipse系统的核心部分在启动的时候要完成的工作十分简单 启动平台的基础部分和查找系统的插件

Eclipse的核心是动态发现 懒惰装入(Lazy)与运行的 平台用户界面提供标准的用户导航模型 于是每个插件可以专注于执行少量的任务 例如定义 测试 制作动画 发布 编译 调试和图解等 只要用户能想象得到的就会应有尽有

当Eclipse插件实现了一个扩展点 就创建了一棚改型个扩展 此外 使用此扩展点的插件还可以创建自己的扩展点 这种插件模式的扩展和扩展点是递归的 而且被证明是非常灵活的 事实上 Eclipse核心就是构建在插件之上的 这样随着使用Eclipse构建Eclipse插件的累积 这种插件模式就变得日渐成熟

插件安装注意事项

初学者可能会对插件有恐惧心理 认为这是Eclipse底层的东西 其实不然 安装插件非常容易 安装插件时注意如下的几个问题就可以了

插件的依赖关系

如果用户要安装的插件还需要其他插件的支持 则需要安装依赖的插件才能使新安装的插件正常运行 例如用户要安装一个图形编辑的插件 但此插件需要图形编辑框架(GEF)插件的支持 只有先安装了GEF才能使新的插件安装成功

歼伍 缓存

Eclipse会通过缓存的机制加载插件 有时用户刚安装的插件可能没有正常启动(特别是links方式安装) 清除缓存后再重新启动Eclipse就行了 清除缓存最简单的方式是删除Eclipse的configuration目录下的所有文件夹(保留config ini文件) 还可以通过启动参数 clean启动

注意 如果是通过Update方式安装的插件 不能把Update方式安装的目录删除掉 否则这种方式安装的插件启动不了了

版本

当用户安装的插件要求某一个特定版本的Eclipse 或依赖某个特定版本的插件时 也可能会使插件安装不成功

安装插件要和依赖插件的版本号和依赖的Eclipse版本号对应 例如要安装的图形编辑插件依赖GEF 插件 版本号为 而GEF 只能在Eclipse 及更高版本运行 所以只有安装了GEF 和Eclipse 才能正确安装此图形编辑插件

用户在安装插件之前 要看看插件依赖的插件列表和特定版本信息的帮助文档 通常在插件发布时 同时会发布一个插件依赖的列表 有了这些信息 用户链猜就可以正确安装插件了

插件安装

Eclipse是通过一种非常 干净 的安装方式进行安装的 不会因为安装Eclipse而影响其它软件的运行 安装Eclipse的插件也是如此

插件的安装方式分为 拷贝安装 links安装和update安装 它们各有特色 下面分别介绍这几种安装方式

拷贝安装

拷贝安装是一种最简单的安装插件方式 用户只要把插件的压缩文件解压以后拷贝到Eclipse的安装目录即可 例如 GEF ALL zip 是GEF插件的压缩包 其中包含了Eclipse目录 Eclipse目录下面包含了plugins目录和features目录等 如图 所示

图 GEF插件压缩包结构

用户可以解压以后把plugins目录和features目录拷贝到安装Eclipse的根目录即可 拷贝到Eclipse根目录后 安装就已经完成了 如果要安装插件正确 以及此插件所依赖的第三方插件和Eclipse的版本正确 重新启动Eclipse就可以看到新安装插件的运行效果

links安装

通过links方式安装插件是一种既 干净 又有效的安装方式 也是笔者极力推荐的一种安装方式 试想一下 通过拷贝的安装方式安装插件 如果同一个Eclipse下安装的插件太多 想删除某几个插件怎么办?用户就得在Eclipse的plugins目录中找到所有插件目录 把它们一一删除掉 另外 还得删除feature下的所有相关安装选项 这是多么痛苦的事情呀

links安装方式为用户解除了这种烦恼 通过links安装方式 用户不需要把所有的插件都拷贝在Eclipse目录中 只需要编写一个文本文件 通过文件指定插件的位置 让Eclipse找到所指的插件目录就可以了 当用户要删除插件时 只需要删除文本文件或文本文件中引用的插件即可 通过links安装插件的步骤如下

在Eclipse目录(ECLIPSE_HOME)下创建一个links目录

在ìLIPSE_HOME%\links目录下创建一个link文件(只要是文本文件就可以)

把link文件指向插件所在的目录 例如文件内容为 path=D:/Program/java/eclipse/Plugin download /GEF ALL 路径的分隔符为 / 或 \\ 一个文件中可以指向几个插件 即在同一个文件中多写几行 path=… 即可 也可以在links目录下面多写几个link文件 笔者是通过把每一个插件写到一个文件的方式安装插件的 这样删除插件时可直观地删除文件 如图 所示

图 links方式安装插件

插件所在目录结构和插件在Eclipse中的目录结构一样 例如GEF插件解压以后的结构为 GEF ALL /eclipse/… link文件指向 GEF ALL 所在目录即可 Eclipse启动以后会找到 GEF ALL 目录下Eclipse子目录中所有的插件 下面为一个link文件中的内容

path=D:/myplugin/tptp path=D:/myplugin/wtp path= /birt

path可以是插件的绝对路径 还可是相对于Eclipse安装目录的相对路径 如 path= /birt 用户如果要删除相关插件 可以删除link文件或删除文件中的引用 也可以删除一个link文件中插件path所在行 即删除插件引用就行

提示 删除link文件或links目录后 重新启动Eclipse有可能会失败 清除Eclipse的缓存即可

update安装

除了拷贝安装方式和links安装方式外 Eclipse还能通过网络安装插件 这种方式操作简单 用户只要知道插件的更新地址就可以 通过解析更新地址的XML文件 Eclipse知道要到什么位置找到插件更新包 另外 Eclipse还能判断当前安装插件的版本是否正确

通过update方式安装插件非常简单 具体步骤如下

选择 Help → Sofare Updates → Find and Install 菜单 弹出对话框如图 所示

图 查找新的Update站点

选择第二项 单击 Next 按钮 打开显示Update站点的对话框 如图 所示

图 显示Update站点

在显示站点对话框单击 New Remote Site 按钮 打开指定Update站点的对话框 如图 所示

图 添加新的Update站点

添加新的站点后 按Eclipse的更新向导就可以完成插件安装了

提示 也有很多开发人员喜欢通过update方式安装插件 这种方式安装简单 而且Eclipse向导会负责查找当前插件的依赖插件是否存在 从而确保插件安装是否成功

查看插件

用户安装了插件后 如果想确认插件是否安装成功 可以重新启动Eclipse 查找插件是否加载 查看插件步骤如下

选择 Help → About Eclipse SDK 菜单 弹出的对话框如图 所示

图 About对话框

单击 Plug in Details 按钮 如果插件安装成功 将会显示在插件对话框中(所有成功安装的插件都会显示在此对话框中) 如图 所示

图 插件列表对话框

如果安装不成功 参照前面介绍的办法诊断安装的步骤是否有误 或清空Eclipse的缓存重新启动试试

lishixinzhi/Article/program/Java/ky/201311/28663

怎么开发Typecho插件教程

可以通过navBar = array(‘伍巧银插件腔宴名称’, ‘方法名称’)来实现,例如: Typecho_Plugin::factory(‘admin/menu.php’)-navBar = array(‘HelloWorld_Plugin’, ‘render’); 问题是宽皮typecho更多的是第二形式接口

开发Intellij Idea插件

在过去几乱唤年中开发插件及教程,JetBrains的IntelliJ很快成为Java开发人员的顶级IDE。使IntelliJ对Java开发人员如此有吸引力的一个特性是使用插件扩展和创建新功能的能力。在本教程中,开发插件及教程我们将介绍如何编写IntelliJ插件来演示扩展IDE的几种方法。

Intellij插件按照功能可分四类开发插件及教程

使用 Plugin DevKit( )来创建工程,DevKit提供开发插件及教程了自定义SDK类型和一组用于在IDE中构建插件的操作

在Intellij的菜单栏,选择 File | New | Project, 在 New Project 框里选择 IntelliJ PLatform Plugin

在project SDK选项框选择合适的Intellij SDK,宏陪亩然后下一步,填上project name,完成,就创建好一个Intellij plugin 工程了。

创建自定义Action

创建自定义的action,需要继承抽象类AnAction,并且需要重写方法 AnAction.update() 和 AnAction.actionPerformed() :

actionPerformed()方法

在该方法中,我们通过getSelectedCode()方法拿到用户选择的文本,通过刚发getLanguageTag()获取当前文本语言,比如java,js,go等。然后通过getURL()方法组装url,最后通过BrowserUtil.browse(url) 打开浏览器,并访问给的url。在我们蔽森demo里面,我们将用选择的文本在baidu里面进行搜索。

获取Editor中选择的文本

你需要使用SelectionModel对象获取选择的文本

获取当前文件的语言

从event中通过CommonDataKeys.PSI_FILE key获取到PsiFile对象,然后再从PsiFile中获取到Language。

有两种方式可以注册我们自定义的事件:1. plugin.xml中配置,2.代码中注册

在plugin.xml文件中注册事件:

在Idea中运行或者debug插件是非常简单的一件事

配置

运行

结果

开发插件及教程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于插件开发文档、开发插件及教程的信息别忘了在本站进行查找喔。

免责声明:本文系转载,版权归原作者所有;旨在传递信息,不代表一休教程网的观点和立场。