启动方法 run()
初始化方法(定义路径)init()
自动加载功能 autoload() spl_autoload_register()
路由功能 router()
项目启动run()
public static function run(){
self::init();
self::autoload();
self::router();
}
初始化方法(定义路径)init()
public static function init(){
//1.定义路径 getcwd()获取当前工作路径
define('DS', DIRECTORY_SEPARATOR);//统一linux和windows的目录分隔符
define('ROOT', getcwd().DS);//网站根目录/var/www/local.so.xywy.com/
}
路由方法router()
实例化对象并使用方法
public static function router(){
//确定类名和方法名
$controller_name = CONTROLLER . 'Controller';
$action_name = ACTION . 'Action';
//实例化控制器,然后调用相应的方法
$controller = new $controller_name; //如果没有加载类,则使用自动加载
$controller->$action_name();
}
自动加载方法autoload()
//注册加载方法
public static function autoload(){
spl_autoload_register([__CLASS__,'load']);
}
//加载方法
public function load($classname){
if(substr($classname, -10) == 'Controller'){
require CONTROLLER_PATH."{$classname}.class.php";
}elseif(substr($classname, -5) == 'Model'){
require MODEL_PATH."{$classname}.class.php";
}else{
//暂无
}
}
如何实现自动加载呢?
1. 直接在index.php中,直接使用__autoload()方法
2. 在类中定义一个方法,然后将其注册为自动加载方法spl_autoload_register()
(用法:如果是普通方法,只需要填写函数名即可;如果是类的方法,需告知是那个类的那个方法,用数据传递(__CLASS__
魔术方法表示当前类))