set_include_path(get_include_path().PATH_SEPARATOR."core/main");
set_include_path(get_include_path().PATH_SEPARATOR."core/main/cache");
set_include_path(get_include_path().PATH_SEPARATOR."core/helpers");
set_include_path(get_include_path().PATH_SEPARATOR."core/lib
raries");
set_include_path(get_include_path().PATH_SEPARATOR."app/controllers");
set_include_path(get_include_path().PATH_SEPARATOR."app/models");
set_include_path(get_include_path().PATH_SEPARATOR."app/views");
//include_once("core/config/config.php");
}
}
?>
这个函数很简单,就只定义了一个静态函数,initialize函数,这个函数就是设置include_path,这样,以后如果包含文件,或者__autoload,就会去这些目录下查找。
OK,我们继续,看第三句
$router=loader::load(”router”);
这句话也很简单,就是加载loader函数的静态函数load,下面我们来loader.php
classloader
{
privatestatic$loaded=array();
publicstaticfunctionload($object){
$valid=array("library",
"view",
"model",
"helper",
"router",
"config",
"hook",
"cache",
"db");
if(!in_array($object,$valid)){
thrownewException("Notavalidobject'{$object}'toload");
}
if(empty(self::$loaded[$object])){
self::$loaded[$object]=new$object();
}
returnself::$loaded[$object];
}
}
这个文件就是去加载对象,因为以后我们可能会丰富这个MVC系统,会有model,helper,config等等的组件。如果加载的组件不在有效的范围内,我们抛出一个异常。如果在的话,我们实例化一个对象,其实这里用了单件
设计模式。也就是这个对象其实就只能是一个实例化对象,如果没有实例化,创建一个,如果存在的,则不实例化。
好,因为我们现在要加载的是router组件,所以我们看下router.php文件,这个文件的作用就是映射URL,对URL进行解析。
router.php
classrouter
{
private$route;
private$controller;
private$action;
private$params;
publicfunction__construct()