`
we1818
  • 浏览: 61858 次
  • 性别: Icon_minigender_1
  • 来自: 湖州
社区版块
存档分类
最新评论

Joomla插件开发规范

    博客分类:
  • php
阅读更多
概述:JPlugin Joomla 1.5的新功能

为了更好使Joomla符合面向对象的框架,引入了JPlugin。Plugins 是依附于全局事件分派系统的观察者类。这就意味无论是Joomla核心,还是第三方组件,模块都能触发一个或多个JPlugins来执行一些功能。这与 mambot并不完全相同。虽然mambot与plugin都是事件触发并执行代码,但是mammot需要全局范围的声明,而JPlugin是一个类,事件处理函数能有自己的变量和私有的helper方法,这是整个事件处理系统更加清晰。


2. 实现

JPlugin 系统的实现是一个观察者模式。有两部分,一部分是观察者(JPlugin),另一部分是被观察者(JEventDispatcher)


2.1 JPlugin 类

部分代码如下:

/**
* JPlugin Class
*
* @author Louis Landry < louis@webimagery.net为防备电子邮件地址收集器,这个 E-mail 地址被隐藏,你的浏览器必须支持 Javascript 才可看到这个邮件地址 >
* @package Joomla.Framework
* @subpackage Application
* @since 1.5
*/
class JPlugin extends JObserver {

/**
  * Constructor
  *
  * For php4 compatability we must not use the __constructor as a constructor for plugins
  * because func_get_args ( void ) returns a copy of all passed arguments NOT references.
  * This causes problems with cross-referencing necessary for the observer design pattern.
  *
  * @param object $subject The object to observe
  * @since 1.5
  */
function JPlugin(& $subject) {
  parent::__construct($subject);
}

/**
  * Method to map events to handler methods
  *
  * @access public
  * @param array Arguments
  * @return mixed Routine return value
  * @since 1.1
  */
function update(& $args) {
  /*
   * First lets get the event from the argument array.  Next we will unset the
   * event argument as it has no bearing on the method to handle the event.
   */
  $event = $args['event'];
  unset($args['event']);
 
  /*
   * If the method to handle an event exists, call it and return its return
   * value.  If it does not exist, return a boolean true.
   */
  if (method_exists($this, $event)) {
   return call_user_func_array(array($this, $event), $args);
  } else {
   return true;
  }
}
}

2.1.1 详细设计

两个重要的部分使这个类得以运行

一个是构造器,在构造函数中做了以下操作:

// 注册观察者
$subject->attach($this);
// 设置观察目标
$this->_subject = & $subject;

这样就将JPlugin与被观察者建立了联系,所有的plugin都观察JEventDispatcher对象

第二个重要的就是update方法,这个方法传递给触发器一个数组,数组有两个参数,事件和参数。一旦update方法接收到数组,那么它 提出事件,并清除数组.接下来调用数组传递来的 ‘event’ 方法,返回结果。


3. 第三方使用

例程:

/**
* @version $Id: $
* @package
* @subpackage
* @copyright
* @license
*/

jimport('joomla.plugin');


/**
* Example Plugin
*
* @author
* @package
* @subpackage
* @since
*/
class ExamplePlugin extends JPlugin {

/**
  * Constructor
  *
  * @param object $subject The object to observe
  * @since 1.1
  */
function ExamplePlugin(& $subject) {
  parent::__construct($subject);
}

/**
  * This method handles the onIncrement event.  It takes an integer input and
  * increments its value.
  *
  * @access public
  * @param int $input An integer to increment
  * @return int Incremented integer
  * @since 1.1
  */
function onIncrement($input) {
 
  return $input++;
}
}
?>

如你所见,创建JPlugin非常简单,就是继承JPlugin类,并写一个你要处理事件的方法。
分享到:
评论

相关推荐

    joomla 组件开发

    2. **PHPStorm**:强大的PHP集成开发环境,支持Joomla插件、组件和模块的开发。 3. **GitHub或Bitbucket**:代码版本控制工具,用于团队协作和项目托管。 4. **Composer**:PHP依赖管理工具,方便引入和管理第三方库...

    Joomla!_1.5 扩展开发

    3. **插件开发**:插件在特定事件触发时运行,例如文章发布或用户登录。它们可以扩展系统功能,对其他组件、模块或内容进行操作。理解Joomla!'s 插件系统和事件触发机制是开发插件的关键。 4. **模板开发**:模板...

    php-5.3.3.tar.gz

    三、Joomla插件开发 Joomla的插件系统是其核心组件之一,允许用户通过安装和激活插件来扩展网站功能。在PHP 5.3.3环境下,开发者可以利用以下关键点开发插件: 1. 插件架构:Joomla插件遵循特定的目录结构和命名...

    joomla3.1.1_chinese_v1__1.zip

    总的来说,Joomla 3.1.1中文版的出现,极大地降低了国内用户使用和开发基于Joomla网站的门槛。通过熟悉并掌握这些基础知识,无论是网站管理员还是开发者,都能充分利用Joomla的强大功能,构建出高效、美观且易于管理...

    Packtpub Mastering Joomla.1.5

    1.5 扩展与框架开发**:本书的核心内容是教授读者如何为 Joomla 1.5 开发各种扩展,包括组件、模块、插件等。 - **专业指南**:强调本书的实用性与深度。 - **增加 Joomla 的功能**:通过添加自定义组件、模块、...

    plg_multipleimageupload_joomla_virtuemart_

    - Joomla的Plugin API,插件开发者需要遵循Joomla的规范来编写插件的生命周期方法。 - Virtuemart的API,与Virtuemart的数据模型和业务流程进行集成。 - 国际化支持,通过`.ini`文件实现不同语言环境下的文本本地化...

    Joomla_v3.1.5

    - `CONTRIBUTING.md`:该文件指导开发者如何为Joomla_v3.1.5贡献代码,包括提交规则、编码规范等。 - `LICENSE.txt`:Joomla遵循GNU General Public License (GPL)进行发布,这个文件详细阐述了软件的使用和分发...

    joomla 很酷的一款模版

    "JB"可能代表了模板开发者或设计团队的名称,这通常意味着他们可能还提供其他Joomla相关的主题或插件。 这款模板的特性可能包括但不限于以下几点: 1. **响应式设计**:虽然没有明确提及,但在2010年,响应式设计...

    Joomla js_lightfast_mint

    通常,Joomla 模板会利用流行的前端框架如Bootstrap或Foundation,以提高开发效率和用户体验。js_lightfast_mint 很可能也采用了其中的一种,这些框架提供了预设的CSS样式、布局组件和JavaScript功能,帮助构建现代...

    Joomla_3.0.2-Stable-Full_Package.zip

    - `CONTRIBUTING.md`: 这是贡献指南,列出了开发者如何参与 Joomla 项目,包括代码提交、问题报告和代码风格规范。 - `index.php`: 网站的入口文件,处理所有请求并初始化 Joomla 系统。 - `LICENSE.txt`: 许可证...

    Joomla简单判断用户是否登录的方法

    这种方式更符合Joomla的开发规范,同时也可以确保兼容性,因为Joomla的API会随着版本更新而进行调整。 此外,如果你在控制器或模型中需要判断用户状态,可以使用`JFactory::getApplication()-&gt;getUser()`或`...

    基于Joomla-Platform内容管理框架的网站设计--毕业设计(论文).docx

    Joomla Platform以其丰富的组件、模块和插件体系,为开发高效、易用的论文管理系统提供了便利。其核心特性包括: - **模板系统**:Joomla的模板系统允许设计出美观且响应式的界面,适应不同设备的访问需求。 - **...

    plugins

    插件开发语言取决于宿主应用支持的语言,如JavaScript、Python、Java等。 6. **插件管理**:许多应用提供了内置的插件管理机制,允许用户安装、禁用、更新插件。这包括插件市场的访问,以及对已安装插件的配置和...

    Joomla开启SEF的方法

    除了SEF设置之外,Joomla还提供了丰富的插件和模块来进一步优化网站性能和用户体验。对于想要深入了解Joomla的用户,可以参考如《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》等专题文章,它们将为你提供...

    JStudio:生成Joomla扩展的工具-开源

    6. **文档生成**:考虑到Joomla扩展需要遵循一定的API和规范,JStudio可能会提供自动文档生成功能,帮助开发者生成符合Joomla标准的文档。 压缩包中的文件名列表揭示了JStudio可能依赖的一些库和组件: - `Ionic....

    聚合图床纯PHP源码 多接口

    如果作为插件,它可能需要与现有的CMS(内容管理系统)如WordPress、Joomla等集成,这就涉及到PHP的插件开发规范和API调用。 在【压缩包子文件的文件名称列表】中,"乘风_图床源码 多接口"可能是源码的主要文件或者...

    插件核心

    在PHP环境中,插件常被用于网站开发,如WordPress、Joomla等平台,以增强网站功能,如SEO优化、社交媒体集成、安全防护等。 Qwizi插件核心框架提供了一个结构化的环境,使得开发者可以轻松创建和管理这些插件。它...

    《CMS与模板制作》2015级教学大纲1

    这门课程不仅涵盖了UI(用户界面)和交互设计的基础规范,还强调了软件和插件的开发与应用。以下是课程的详细说明和教学设计。 ### 第一部分:大纲说明 1.1 制定依据 该教学大纲基于计算机科学教育的发展趋势和...

    最新virtue mart 开发手册

    此开发手册为开发者提供了详细的指导与规范,帮助他们更好地理解VirtueMart的工作原理及如何进行定制化开发。 ##### 1.1 历史背景 - **起源**: VirtueMart起源于一款名为phpShop的开源购物车脚本。该脚本最初由...

    php程序员年度工作总结

    比如本案例中的开发人员,他首先需要学习的是JOOMLA框架。 - **挑战与学习:**在实际工作中会遇到各种各样的问题,如案例中提到的“北京XX广告有限公司”项目,面对不熟悉的技术或框架时,开发人员需要具备快速学习...

Global site tag (gtag.js) - Google Analytics