【VC++开源代码栏目提醒】:网学会员--在 VC++开源代码编辑为广大网友搜集整理了:joomla_1.5_代码分析 - 管理信息系统绩等信息,祝愿广大网友取得需要的信息,参考学习。
joomla源
代码探析一 准备工作 2007-12-15 18:12 管理员 847 次点击 Tags: 源
代码一个
代码过程生成 用Joomla 建站一段时间了由于采用了1.5RC3版建站过程中发现了不少
的问题为了
解决这些问题看了不少的源
代码打算写一下源
代码的
学习过程。
首先是
准备工作源
代码的学习过程其实也是一个不断测试
代码的过程所以 1、搭建一个测试网站我建议在本机上架一个WAMP环境嘿嘿
为什么选择WAMP主要个人习惯了做了6年的
linux下的程序员还是不习 惯emacs呵呵windows
下的编辑器好用。
2、搭建测试网站
建议直接采用SVN下来的
代码在
windows上装一个tortoiseSVN就可以了joomla SVN reposity的地址是 http://joomlacode.org/svn/joomla/development/trunk 3、
编辑器我觉得挺重要的我推荐使用 UE Studio 用上你就知道了能自动根据源码中的内容生成类和函数的标签你就不需要寻找document的生成器了。
4、搭建完成后用UE建一个project 导入源
代码时间有点点长它在
分析代买生成TAG生成后你就点击“标签”就可以看到全部的类和函数习惯了
VC的编辑环境的人肯定喜欢这个。
5、搜寻
代码学
习的资源目
前我也没找到我只在http://dev.joomla.org 上查看了framework的文章中文资源似乎就更少了我是说1.5版的1.0版的有几个中文网站谈到部分的
代码问题但是我没仔细看过质量到底如 何。
到现在位置已经
建立了研究环境下一步就是“开始” joomla源
代码探析二 目录结构 2007-12-15 20:51 管理员 849 次点击 Tags: 结构目录首先熟悉完毕 测试网站搭建完毕首先来熟悉一下1.5RC3版的目录结构 1、componets 所有安装的组件的前端用户
界面相关程序都在这里每个组件一个子目录通常是com_ 2、plugins 所有的插件涉及的程序文件和模板文件资源等等 3、modules 所以
安装的模块相关的程序和资源 4、includes 涉及重要的类定义等等 5、languages下面是所有的语言文件新的规范是一种语言一个目录比如英文就是en-GB
中文简体就是zh-CN目录下是相应的语 言定义文件命名
规则是 语种.组件名字插件名字.ini 比如 zh-CN.com_showcase.ini zh-CN.plg-.ini等等。
6、templates 没说的
一种模板一个
目录 7、library 最重要的目录之一了下面都是重要的类文件子目录结构对应类
名称比如 jimport joomla.environment.uri 那么对应的是 joomla/environment/uri.hp 文件 其他的cache
logs目录就不说了以后用的到。
joomla源
代码探析三 万源之源 2007-12-16 20:15 管理员 816 次点击 Tags: 探析源
代码joomla 万源之源这个名字非常有意思老是让我想起小时候玩的那种圆圆的纸牌在
土地中玩的用自己的纸牌把别人的打翻了就赢了别人的大部分都是纸壳剪的 偶尔也有用油毡纸或者石棉纸做的通常把这种好的牌或者那种连赢了几次的纸牌
作为自己的镇家宝贝在牌背面上写上“保家之宝”也有“宝家之宝”我曾 经留了几张一直到
高三毕业。
哈哈哈现在不知道去那里了也许
父母还留着吧。
documentroot/index.php 以及 template//index.php 可以称为万源之源因为可以说
所有的页面都是这两个文件的成果。
/index.php 是所有页面程序的起点让我们来看看这个文件到底做了什么 define _JEXEC 1 //标志这是一个跟文件 defineJPATH_BASE dirname__FILE__ //取得Document root就是 /index.php所在的绝对路径 define DS DIRECTORY_SEPARATOR // 定义目录分隔符 require_once JPATH_BASE .DS.includes.DS.defines.php //defines.php定义了一些目录变量以后详细的写 require_once JPATH_BASE .DS.includes.DS.framework.php //framework.php是另一个非常重要的文件在framework.php读入了config.php中
定义的变量同时 //framework中引入了一些的基础类例如JFactoryJUser等等 //全局对象工厂类JFactoryJFactory符合
设计模式中的工厂模式基本生成的对象大部分是单例模式接下来我
详细描述 JFactoryJFactory 在/libraries/joomla/factory.php中定义 mainframe amp JFactory::getApplicationsite //取得JApplication 对象JApplication是一个工厂类提供了一些指定对象的生成并提供了一系列的api函数 //application初始化过程设置语言并缺的editor的设置并生成Juser对象 mainframe-gtinitialise //引入system 组的插件 JPluginHelper::importPluginsystem // 触发初始化完毕后定义的pluging响应
事件 mainframe-gttriggerEventonAfterInitialise //route函数根据url
生成进行解析设置JRequest mainframe-gtroute // authorization Itemid JRequest::get
Int Itemid mainframe-gtauthorizeItemid //触发route后plugin JDEBUG _PROFILER-gtmarkafterRoute : null mainframe-gttriggerEventonAfterRoute //根据JRequest的的option参数dispatch到那个组件也就决定页面的内容部分是那个组件生成 option JRequest::getCmdoption mainframe-gtdispatchoption //触发dispatch后的plugin JDEBUG _PROFILER-gtmarkafterDispatch : null mainframe-gttriggerEventonAfterDispatch //页面的渲染
过程生成整个
页面html mainframe-gtrender // trigger the onAfterDisplay events JD
EBUG _
PROFILER-gtmarkafterRender : null mainframe-gttriggerEventonAfterRender echo JResponse::toStringmainframe-gtgetCfggzip 以上是 /index.php的
内容从这个index.php的引出了几个重要
的文件需要我们去注意 /inclu
des/defines.php /includes/framework.php /libraries/joomla/application.php /libraries/joomla/factory.php 接下来我们主要看看这些文件。
joomla源
代码探析四 defines.php 2007-12-16 20:42 管理员 599 次点击 Tags: 路径主要文件一个时候 其实这个文件没什么好说的主要就是定义一些
路径贴出来主要是以后文件中提这些路径的时候有一个印象 parts explode DS JPATH_BASE //Defines define JPATH_ROOT implode DS parts define JPATH_SITE JPATH_ROOT define JPATH_CONFIGURATION JPATH_ROOT define JPATH_ADMINISTRATOR JPATH_ROOT.DS.administrator define JPATH_XMLRPC JPATH_ROOT.DS.
xmlrpc define JPATH_LIBRARIES JPATH_ROOT.DS.libraries define JPATH_PLUGINS JPATH_ROOT.DS.plugins define JPATH_
INSTALLATION JPATH_ROOT.DS.installation define JPATH_THEMES JPATH_BASE.DS.templates define JPATH_CACHE JPATH_BASE.DS.cache 这些路径在以
后的文件中经常用到。
joomla源
代码探析五 framework.php
2007-12-22 17:12 xieyingwu 649 次点击 Tags: 文件这个引入下面基本 /include/framework.php 这个
文件在index.php中是最早引入的文件之一这个文件主要实现了一些基本类的引入下面我们逐一看一下 require_once JPATH_LIBRARIES . DS . loader.php //loader.php 是一个载入类
的基本工作最重要的是Jimport 比如 jimport joomla.environment.response 实际上就include_once /libaries/jooma/environment/response.php require_once JPATH_CONFIGURATION . DS . configuration.php //引入了configuration.php jimport joomla.base.object jimport joomla.environment.request JRequest::clean //清空Jrequest // System configuration CONFIG new JConfig //读取配置文件生成Jconfig
对象 if JDEBUG jimport joomla.utilities.profiler _PROFILER amp JProfiler::getInstance
Application 以上这段主要是如果配置处于debug状态那么就生成_PROFILER这个对象主要要用来记录页面执行到某一节点的执行时间
内存状态调 试信息。
jimport joomla.environment.response jimport joomla.application.menu //needs to be loaded later jimport joomla.user.user jimport joomla.environment.uri jimport joomla.factory jimport joomla.methods jimport joomla.html.html //needs to be loaded later jimport joomla.utilities.array //needs to be loaded later jimport joomla.utilities.error jimport joomla.utilities.utility jimport joomla.utilities.string //needs to be loaded later jimport joomla.filter.output jimport joomla.version //needs to be loaded later jimport joomla.event. 这些引入的类中比较重要的是 factory user menu 需要仔细
研究一下其他的用的时候再仔细看
文档就行啦 当然methods也包含了很多
基本的函数和类尤其是需要了解SEF的时候。
接下来我们将仔细看看/index.php中 mainframe amp JFactory::get
Applicationsite 这句话到底完成了什么
工作。
Joomla源
代码解析六 JDocument 类的几个常用的
方法 在
google搜索我的网站就会
发现一些因为没有
注意meta和title 所有的
开源项目相关的页面title和meta都一样对用户很不友好根本无法分清那个链接是说什么内容的那么这里就
需要JDocuement类来解 决问题 用法很简单首先取得document对象 document amp JFactory::getDocument 然后 document-gtsetTitle document-gtsetDescription //添加 meta document-gtaddStyleSheet //添加
CSS文件 document-gtaddScript //添加js脚本 document-gtsetLanguage //设置语言文件 其他还有一些 setModifiedDate 等其他基本就不常用了记住这些就行啦 Joomla源
代码解析七 JFactory 类 2
007-12-30 16:18 joomla 544 次点击 Tags: 返回实例调用这个数据 JFactory类正如其名这是
一个工厂类应该是
简单工厂
模式的标准实现。
这个类几个重要的函数分别返回几个重要的实例。
1、getACL 调用_createACL 返回 joomla.user.authorization 的实例数据来源 2、getApplication 调用 joomla.application.application
的实例获取函数JApplication::getInstance也就是我们在index.php中提到的 mainframework 3、getConfig 调用 _createConfig 返回 joomla.registry.re
gistry 实例返回配置参数 4、getDBO 调用 _createDBO返回数据
连接JDatabase的实例这个是以后扩展模块要经常用到的 5、getDocument 调用 _createDocument 根据请求的格式返回JDocumentRaw或者JDocumentHtml实例 6、返回 Juser 实例 7、getLanguage 调用 _createLanguage 返回 joomla.i18n.language的实例以后在多
语言环境经常用到。
其他的比如getMailergetCache 等就不在写了 Joomla源
代码解析八 JDatabase 类 2007-12-30 16:33 joomla 549 次点击 Tags: 函数返回一个数据库数据 这是数据库connector类封装了与数据库操作的一
系列操作。
目前有两个子 类JDatabaseMysqlJDatabaseMy
sqli这个类为以后扩展到其他数据库留出了
接口。
关于一些具体函数没有什么
特殊的基本对应
mysql的函数的一些特征对于这个类应用基本都是首先 setquery 然后load 或者
直接执行
executequery 主要还是不要混淆load开头
的几个函数的具体功能 1、loadObject 以对象的形式返回结果集的第一行数据 2、loadObjectList 对应上一个函数返回一个对象的集合 3、loadResult 返回第一行的第一个字段或者NULL 4、loadResultArray 返回某一字段的数据到一个数组中 5、loadRow 返回第一行数据应该是数组形式 6、loadRowList 对应上一个函数返回行数据的集合 还有一个函数很重要就是 setUTF 这个函数决定了数据库能显示中文。
Joomla源
代码解析九 JUser 类 2007-12-30 19:17 joomla 518 次点击 Tags: 用户信息相关函数
程序 user 类处理所有程序中与用户交互的相关事情。
这个类的构造
函数调用load函数输入的参数是用户id
可以初始化用户的相关信息这些信息包括 aid gidusertypeusernamenameid等等这些信息在扩展中经常用到。
同时在程序中用刚刚说过的getUser取得
当前登录
用户实例。
具体用法如下 user amp JFactory::getUser userId int user-gtgetid 根据gid 可以
判断用户的
相关的组以及组权限。
了解了Juser类还需要了解一下 JUserHelper类这个类包括了与用户
活动相关的几个函数比如获得随机密码以及取得
加密密码等。
同样 getUserId 根据用户名取得用户ID 也是经常用到的。
Joomla源
代码解析十 JPath JFile JFolder 类 2007-12-30 19:54 joomla 584 次点击 Tags: 生成
模块代码函数
非常 这几个类都是filesystem包中
的重要类具体的使用看我在模块快速生成器中的
代码函数
意义都非常明确 ifJFolder::existstargetpath JFolder::deletetargetpath JFolder::createtargetpath JFolder::createtargetpath.DS.tmpl 以上是目录使用的例子 sfilesourcepath.DS.index.
html tfiletargetpath.DS.index.html JFile::copysfiletfile filestfile 文件拷贝 sfilesourcepath.DS.helper.php dataJFile::readsfile tfile targetpath./helper.php JFile::writetfiledata filestfile unsetdata 文件读取和写入 Joomla源
代码解析
十一 JHtml 类 2008-01-01 11:00 管理员 546 次点击 Tags: 一个显示用到函数看看 JHtml
没有几个函数但是在组成页面已经模板书写过程中经常用到比如 J
HTML::_date this-gtitem-gtdate JText::_DATE_FORMAT_LC5
以及在后台管理中常用到的 来看看这几个函数 calendar
显示一个日历插件 date 显示
格式化日期 iframe 插入一个iframe image 插入一个
图片 link 插入一个超链 以上是
常用的函数函数的以用方式就如例子。
Joomla源
代码解析
十二 JToolBarHelper JToolBar 类 2008-01-01 11:09
管理员 426 次点击 Tags: 管理后台过程经常比如 这个两个类是后台管理过程经常用到的比如 JToolBarHelper::title JText::_ component Manager generic.png JToolBarHelper::deleteList JToolBarHelper::editListX JToolBarHelper::addNewX 这几句就添加了三个按钮添加删除
修改 其实还有几个常用的 preview //预览 publish //发布 cancel //取消
比较常用的就这几个了主要是在后台管理toolbar上的按钮。
相关按钮的动作对应后台管理的task相应的对做要在controller中生 命。
Joomla源
代码解析十三 JText类 2008-01-01 11:22 管理员 422 次点击 Tags: 常用Joomla语言文件存储 Joomla 最常用的类之一使用方式JTEXT::_JJJJJ JJJJJ对应语言文件中的相应字符串。
为了实现多语言这个是常用的。
当然如果你以utf-8字符集
存储php文件对于中文就不用考虑那么多了不过不够规范喓。
要是只是自己用也无所谓啦开发要快点。
呵呵
推荐还是用吧 Joomla源
代码解析十四 JRequest类 2008-01-01 19:04 joomla 442 次点击 Tags: Joomla提交信息得到get 这是另一个Joomla扩展中最常用的类这个类封装了
客户端提交的请求相关的信息通过这个类你可以得到用户提交的相关信息和数据有几个重要的 函数 首先是gethash我们看看部分
源码就知道get得到
什么了 switch hash case GET : input _GET break case POST : input _POST break case FILES : input _FILES break case COOKIE : input _COOKIE break case ENV : input amp_ENV break case SERVER : input amp_SERVER break default: input _REQUEST break 我们通过getpost 等取得用户提交的数据数组。
还有getVar 取得某一request变量 getURI 返回请求的URI setVar和set 则对应着getVar 和get 在程序中使用的方式是JRequest::getVar Joomla源
代码解析十五 组件是如何被调用并渲染的 2008-01-01 20:32 joomla 566 次点击 Tags: 渲染调用组件Joomla我们 Joomla
代码中 组件是如何被调用并渲染的呢 在描述 /index.php的时候我们看到根据option参数mainframework-gtdispatch就进入了组件的调用并渲染的 过程我们来看看JSite 的dispatch都做了什么工作。
dispatch 最关键的是这几句话 document-gtsetTitle params-gtgetpage_title //设置标题 document-gtsetDescription params-gtgetpage_description //设置meta contents JComponentHelper::renderComponentcomponent document-gtsetBuffer contents component 可以看到最为
关键的是 JComponentHelper::renderComponentcomponent 再看看这一行程序完成了那些工作 task JRequest::getString task // Build the component path name preg_replace/A-Z0-9_.-/i name file substr name 4 // Define component path define JPATH_COMPONENT JPATH_BASE.DS.components.DS.name define JPATH_COMPONENT_SITE JPATH_SITE.DS.components.DS.name define JPATH_COMPONENT_ADMINISTRATOR JPATH_ADMINISTRATOR.DS.components.DS.name // get component path if mainframe-gtisAdmin ampamp file_existsJPATH_
COMPONENT.DS.admin..file..php path JPATH_COMPONENT.DS.admin..file..php else path JPATH_COMPONENT.DS.file..php 这部分实际上
确定了那个compoent下的组件文件被引入并取得了task中间一部分兼容
代码就不看了
我们来看关键
代码 ob_start require_once path contents ob_get_contents ob_end_clean 这部分
代码就是包含了组件的
开始文件而这个文件我们在组件开发的时候用到的。
这个文件引入了controller 文件并根据task决定
进入那个分支。
再
深入下去就是组件的整个生成过程以后再看了。
Joomla源
代码解析
十六 JTable是什么 2008-01-02 21:58 joomla 584 次点击 Tags: JTable时候对应我们函数 JTable是什么肯定不是对应html中的table 在做com_helloworld的时候没有仔细
理解后来一位同事问我JmodelJTableJDatabase有什么
区别一时语塞 JTable是数据库中数据表在程序
中的表达不知道这句话
怎么说其实JTable更对应着表中的一行以及相应的操作。
Joomla中的 JTable对应中数据库中 表我们在使用的时候要针对我们
自己所使用的表扩展自己的JTable.我们需要关注的是JTable的函数checkincheckout 着两个函数对
更新的数据
进行合法性检查我个人觉得对于数据完整性的
检查应该放在Jtable的check中。
Jtable 比较常用的函数看名字就明白了记住几个吧 dele
testorebindloadsetError等具体还是需要用的时候看看源
代码吧。
Joomla源
代码解析十七 JModel是什么 2008-01-03 00:00 joomla 458 次点击 Tags: 数据JModelMVC对于我们 我们经常提到MVC模式JMo
del在Joomla的M
VC组件中是重要的一个环节JModel是MVC中的数据视图层我们需要明白的是 JModel
不同于JTable数据视图是由一个或者几个table构成或者多条数据
记录构成的数据集合以及数据集合的相关操作对于JModel 我们不必了解太多的具体函数在组件开发过程中通常都要继承JModel在子类中完成数据集合的生成以及相关的操作保存删除。
我个人倾向对于几个表
之间的数据
完整性要在JModel中验证而对于单一表的数据完整性要通过JTable check函数完成。
同事对于那些有
逻辑操作的
验证则最好在MVC的 controller层完成。
接下来我们要看看MVC中的 View 和 Control Joomla源
代码解析十八 Jview 2008-01-05 14:46 管理员 421 次点击 Tags: 需要扩展
桥梁组件自己 MVC模式中重要的一环JVi.