2012年12月26日星期三

分析PHPCMS V9执行过程之一


分析PHPCMS V9执行过程之一

从手册得知PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。
PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。
入口程序是在前期处理用户请求的引导程序。它是唯一一个可以被最终用户可以直接请求运行的。
入口文件:根目录/index.php
<?php
/*
* index.php PHPCMS 入口
*/
//PHPCMS根目录
define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
include PHPCMS_PATH.'/phpcms/base.php';
pc_base::creat_app();
?>
分析:用户的所有请求都要首先被发送到入口文件。
define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);define定义常量PHPCMS_PATH,dirname(__FILE__) 就是取得当前文件所在的目录。通常在配置文件路径的时候用dirname(__FILE__)是非常有效的方法,但是因为__FILE__的路径是当前代码所在文件(而不是url所在文件)完整路径,所以定义配置文件通常要放在根目录下定义网站的根地址,但是下面的方法可以解决配置文件的存放问题。
dirname(dirname(__FILE__)); // 假设__FILE__为 /home/web/config/config.php ,输出为 /home/web
dirname(dirname(__FILE__)); 得到的是文件上一层目录名
dirname(__FILE__); 得到的是文件所在层目录名
即使这个文件被其他文件引用(include或require),__file__始终是它所在文件的完整路径,而不是引用它的那个文件完整路径。 说:在这里,dirname(_FILE_)为服务器根目录.或者写成
E:\wamp\www\phpcms
DIRECTORY_SEPARATOR是目录分离器,在win下是"/" liunx下是"\"
path_separator路径分离器 在win下include多个路径的话,中间用;分割,在liunx下,则是:
在php里是两个常量,都应该大写,他们的作用的是当项目在liunx还是win下,目录和路径查询都正常。/demo (后面没有"/"号)
include PHPCMS_PATH.'/phpcms/base.php';引入base.php文件,
然后通过类名访问方法creat_app();
注意:静态方法是以类作为作用域的函数。静态方法不能访问这个类中的普通属性,因为那些属性属于一个对象,但可以访问静态属性。
在类的外部,可以通过类名::静态属性或者方法来访问,在内部可以使用self::静态属性或者方法。

没有评论:

发表评论