joomla 3.6 component开发教程之一 component简介

    xiaoxiao2025-03-13  8

    介绍

    在结合个人实际经验、其它大神以及JOOMLA官方文档的基础上,本文旨在为想要学习3.X component开发的朋友们做一下力所能及的知识分享,若有谬误,还请指出。

    为了能正常看到成果,文目标读者必须具备以下能力:

    了解HTTP传输协议了解最基本的网络编程概念,比如端口 会配置最基本的WEB服务,并能区别HTTP服务(如:nginx)和程序服务(如:php-fpm)的区别如果以上内容有不明白的,能自行百度(我保证百度就够了,google、bing啥的还用不着)

    本人用的是JOOMLA 3.6大版本,但3.X系列相互之间的差距应该不会太大(JOOMLA官网也并没有将3.X各个版本区分开来提供不同的文档),若在使用本文作为指导的情况下在其它版本中遇到问题,欢迎留言

    Joomla中的MVC简介

    MVC的概念,本文就不赘述了。在JOOMLA的component中,Model、View、Controller分别以三种不同的类(及其子类)代表,这三个类分别是LegacyModel、LagecyView、LegacyController,

    关于LagecyView、LegacyModel、LegacyController这三个类,博主不再这里分析,说一句不博主自己都不太喜欢的话:请下源码自己看。如果按照JOOMLA自身的框架逻辑来说,初学不太需要去仔细研究源码,只要明白并尊重关键的命名规范就可以做很多事了。当然,想要深入理解JOOMLA框架的同志就必须要去跟源码(debug)了,其中涉及到了太多的目录名、类名等等的字符串拼接;在debug所使用的工具方面,这里个人只用过Xdebug,PHP比较知名的debug工具貌似就是它和Zend Debugger了。

    M、V、C三者在JOOMLA中的联系可用下图表示:

    图1

    接下来从比较宏观的角度来介绍下JOOMLA component中M、V、C的概念及其作用(在这里只是针对用户自主开发的component而言):

    Model Model层直接管理WEB后端的数据、逻辑以及一些应用规则在JOOMLA中,Model层一般是由View层直接调用获取数据View View层主要用于处理从Controller层引入的请求以及这之后相关数据的展示在JOOMLA中,View层负责了相当一部分的计算工作Controller Controller层主要作用是根据客户端的输入数据(如:http中get/post方法传入的数据)调用相应的View层逻辑来处理用户请求在JOOMLA中,Controller一般不直接与Model层发生联系(从图1中的虚线可以看出),且其中涉及的计算与View、Model层相比较少,如果需求不十分复杂,甚至可以不用写多少代码,直接继承LegacyController即可 PS:关于图1中的箭头,博主认为是数据的流动,而不是调用关系的指向

    命名规则

    ikoDotA的博文教程中对于M、V、C三部分所涉文件夹以及文件的命名规则,做了一个简单介绍,并附上了给了一个链接。 在看过那个链接的内容之后,博主认为很有必要对其进行展开叙述,但考虑到在没有实际范例的情况下很直观的说明,因而将在后续教程中逐渐引入。 记得之前学习MAVEN的时候,官网教程里面有一句话让我印象深刻:如果你真的想从一个体系中受到最大的益处,请尽量遵守该系统的规则,切勿试图打破已经建立好的规则。 任何成熟并且被广大用户所接受的体系都有其自身的稳固性,其中必然存在着已经建立好的“规则”,而作为普通用户,提高工作效率、节省时间必然是主要目的,因而按照规矩办事无疑是比较明智的做法。 当然大牛也许可以打破原有的某些规则,从而派生出让一些更先进的体系,这不在本文讨论范围内。

    component的目录结构

    为了防止出现一脸懵逼的情况(博主刚开始接触的时候就是这种状态),这里简单介绍下component在Joomla根目录中的相对位置: joomla根目录 /opt/joomla-tutorial ├── **administrator** │   ├── cache │   │   └── index.html │   ├── **components** │   │   ├── com_admin │   │   ├── com_ajax │   │   └── ... ├── bin ├── cache ├── cli ├── **components** │   ├── com_ajax │   ├── com_banners │   └── ... ├── htaccess.txt ├── images ├── includes ├── index.php ├── installation ├── **language** ├── layouts ├── libraries ├── LICENSE.txt ├── media ├── modules ├── plugins ├── README.txt ├── robots.txt.dist ├── templates ├── tmp └── web.config.txt 以上就是本人测试环境下的joomla目录结构,可以看到每个component都对应了两套代码(暂且用这个词吧,或者可以叫做应用场景?如图中的加粗部分),分别对应管理后台(网站域名/administrator,非管理员无法登录查看)与外部网站(所有人可见)。 其中管理后台部分的代码在administrator/components下,而外部网站部分代码则是直接位于components目录下;另外本教程涉及到的重要目录还有language目录,用于处理多语言需求。

    本教程所涉的用户需求

    本教程所涉及到的功能如下: 外部网站(site) 普通访客可以注册普通访客可以参与投票、浏览文章已注册用户可发言、发表评论管理后台(admin) 网站内部人员专用,用于发表投票、文章注册用户、普通访客无法访问

    博主将尽可能用上joomla中component相关的所有技术 本教程的代码都放在 /opt/joomla-tutorial 下,教程中可能会出现

    功能需求明确之后,本系列教程实操部分的结构大致如下(在最终版本前随时可能修改或者增删):

    1. component外部网站(site): 新建一个简单的新建一个简单的外部页面(site)及其目录结构概览

    2. component外部网站(site): 创建不同的layout页面

    3. component外部网站(site): controller 与 子controller

    4. component外部网站(site): 数据界限——创建多个model类

    5. component管理后台(admin): 与site结构类似的开发逻辑

    参考文献

    ikoDotA の BLOGDeveloping a MVC Component/IntroductionModel–view–controller
    转载请注明原文地址: https://ju.6miu.com/read-1297000.html
    最新回复(0)