欢迎来到天天文库
浏览记录
ID:40557702
大小:18.76 KB
页数:5页
时间:2019-08-04
《Joomla 代码解读》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Joomla代码解读我们从安装程序入口文件/installation/index.php开始。1.常量定义index.php文件起始处定义了若干常量:define('_JEXEC',1);define('JPATH_BASE',dirname(__FILE__));define('DS',DIRECTORY_SEPARATOR);_JEXEC是一个标志量,表示程序正常启动(通过合法入口/index.php访问)。Joomla!在其他所有的.php程序起始处,均通过执行以下代码,阻止直接访问非入口程序的请求,这是出于安全的考虑://nodi
2、rectaccessdefined('_JEXEC')ordie('Restrictedaccess');JPATH_BASE顾名思义,是指安装程序的根目录,注意它与PHP预定义变量$_SERVER['DOCUMENT_ROOT']的区别,后者是当前的www虚拟主机在文件系统中的根目录,它是前者的上级目录。__FILE__是PHP的魔术常量之一:名称说明__LINE__文件中的当前行号。__FILE__文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自PHP4.0.2起,__FILE__总是包含一个绝对路径,而在此之前的版本
3、有时会包含一个相对路径。__FUNCTION__函数名称(PHP4.3.0新加)。自PHP5起本常量返回该函数被定义时的名字(区分大小写)。在PHP4中该值总是小写字母的。__CLASS__类的名称(PHP4.3.0新加)。自PHP5起本常量返回该类被定义时的名字(区分大小写)。在PHP4中该值总是小写字母的。__METHOD__类的方法名(PHP5.0.0新加)。返回该方法被定义时的名字(区分大小写)。定义DS则完全是为了方便程序书写和阅读,DIRECTORY_SEPARATOR是PHP的预定义常量之一,指目录分隔符,在Windows中
4、是反斜杠(backslash),在Linux中是斜杠(slash)/。2.引入框架定义在常量定义之后,通过两个包含文件引入了Joomla!安装程序的框架定义:require_once(JPATH_BASE.DS.'includes'.DS.'defines.php');require_once(JPATH_BASE.DS.'includes'.DS.'framework.php');这两个文件的实际位置在/installation/includes/目录中。打开/installation/includes/defines.php文件,这
5、里定义了若干与路径有关的常量,包括:JPATH_ROOTJoomla!根目录,当Joomla!被配置为独立的虚拟主机程序是地,此变量相当于$_SERVER['DOCUMENT_ROOT']JPATH_SITEJoomla!站点目录,JPATH_ROOT的别名JPATH_CONFIGURATION配置文件保存目录JPATH_ADMINISTRATOR后台管理程序根目录JPATH_XMLRPCXMLRPC目录JPATH_LIBRARIES库程序目录JPATH_PLUGINS插件目录JPATH_INSTALLATION安装程序目录JPATH_T
6、HEMES外观模板目录JPATH_CACHE缓存目录好了,我们可以关闭defines.php文件了。再来看看/installation/includes/framework.php文件中有些什么,首先是PHP配置调整:error_reporting(E_ALL);@set_magic_quotes_runtime(0);@ini_set('zend.ze1_compatibility_mode','0');此处做了这么几件事:打开PHP报错,要求回显从错误(Error)到提醒(Notice)的全部异常信息;关闭运行时魔术引号(magic_
7、quotes_runtime)功能。此功能将对所有来自外部(包括数据库或文本文件)的字符串中的引号进行转义,即在其前面加上反斜杠或使用两个连续单引号替换所有的单引号(当打开magic_quotes_sybase开关时)。PHP不鼓励使用此功能,从PHP6.0.0开始它将被废除;关闭Zend引擎1(PHP4)兼容模式。PHP官方文档中提到:这影响到了对象的复制、构造(无属性的对象会产生FALSE或0)及比较。此模式下,对象将以值传递,而不是默认的引用传递。Joomla!的程序设计完全遵循面向对象思想,且书写非常规范,在这种前提下,这些兼容
8、功能只会造成困扰,不如舍弃之。接着检查Joomla!安装状态:if(file_exists(JPATH_CONFIGURATION.DS.'configuration.php')&&(file
此文档下载收益归作者所有