如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
--------------------PHPCMS学习记录------------从index.php开始解读代码:总共3行代码,完成了很多事。define('PHPCMS_PATH',dirname(__FILE__).DIRECTORY_SEPARATOR);includePHPCMS_PATH.'/phpcms/base.php';pc_base::creat_app();第一句,定义phpcms站点根目录PHPCMS_PATH,注意这里定义的目录常量不是服务器根目录,而是phpcms系统的根目录。_FILE_返回当前文件的绝对路径,dirname(_FILE_)则可以取得当前文件的绝对目录;DIRECTORY_SEPARATOR显示当前系统的分隔符;第二句,引入一个base.php文件,定义了一个pc_base类,从字面意思上可以看出这应该是个基础类,事实亦如此。根据下文猜想pc应该是phpcms的缩写。引入文件的时候完成了一些基础常量的定义和公用函数库的加载等基础配置。第三句,这句代码完成了系统的初始化,非常强大!下面细细道来它的强大之处:先来看这个creat_app()方法,定义如下:publicstaticfunctioncreat_app(){returnself::load_sys_class('application');}那么又来看load_sys_class()方法:publicstaticfunctionload_sys_class($classname,$path='',$initialize=1){returnself::_load_class($classname,$path,$initialize);}接下来是_load_class()方法:privatestaticfunction_load_class($classname,$path='',$initialize=1){static$classes=array();if(empty($path))$path='libs'.DIRECTORY_SEPARATOR.'classes';$key=md5($path.$classname);if(isset($classes[$key])){if(!empty($classes[$key])){return$classes[$key];}else{returntrue;}}if(file_exists(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')){includePC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php';$name=$classname;if($my_path=self::my_path(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')){include$my_path;$name='MY_'.$classname;}if($initialize){$classes[$key]=new$name;}else{$classes[$key]=true;}return$classes[$key];}else{returnfalse;}}颠来倒去的一大堆,实际就是加载类函数并实例化这个类,但是值得赞赏和学习的是这个函数逻辑之严密,由此phpcms框架的成熟性可见一斑。这里加载的类函数是PC_PATH.'libs'.DIRECTORY_SEPARATOR.'classes'.DIRECTORY_SEPARATOR.'application.class.php',PC_PATH就是你的phpcms系统下的phpcms文件目录,有点绕,反正不是你的系统根目录就对了,这里印证了上面pc缩写是phpcms的说法接着上面,现在实例化了application类,那么我们就去看看这个类。首先有个构造函数:publicfunction__construct(){$param=pc_base::load_sys_class('param');define('ROUTE_M',$param->route_m());define('ROUTE_C',$param->route_c());define(