1、实现效果调用控制中方法
2、创建控制器indexCrl.php
<?php
class indexCrl{
public function index(){
echo '当前index控制器index方法';
}
}
3、KJ.php字段加载控制器文件
public static function run(){
//定义常量
self::_set_const();
//创建模块目录
self::_mk_module();
//类自动加载
spl_autoload_register(array(__CLASS__,'_autoload'));
}
//自动加载文件
public static function _autoload($className){
switch ($className){
//自动加载控制器
case substr($className,-3)=='Crl':
$path= CONTROLLER.'/'.$className.'.php';
if(is_file($path)) include $path;
break;
default :
break;
}
}
4、KJ.php框架运行控制器中方法
public static function run(){
//定义常量
self::_set_const();
//创建模块目录
self::_mk_module();
//类自动加载
spl_autoload_register(array(__CLASS__,'_autoload'));
//运行框架
self::_run();
}
//运行控制器中方法
public static function _run(){
$c=strtolower(isset($_GET['c'])?$_GET['c']:'index');
$a=strtolower(isset($_GET['a'])?$_GET['a']:'index');
$c.='Crl';
if(!class_exists($c)){
die("控制器".$c."不存在");
}
$obj=new $c();
if(!method_exists($obj,$a)){
die("控制器".$c."下".$a."方法不存在");
}
$obj->$a();
}
5、完整KJ.php代码
<?php
final class KJ{
public static function run(){
//定义常量
self::_set_const();
//创建模块目录
self::_mk_module();
//类自动加载
spl_autoload_register(array(__CLASS__,'_autoload'));
//运行框架
self::_run();
}
//运行控制器中方法
public static function _run(){
$c=strtolower(isset($_GET['c'])?$_GET['c']:'index');
$a=strtolower(isset($_GET['a'])?$_GET['a']:'index');
$c.='Crl';
if(!class_exists($c)){
die("控制器".$c."不存在");
}
$obj=new $c();
if(!method_exists($obj,$a)){
die("控制器".$c."下".$a."方法不存在");
}
$obj->$a();
}
//自动加载文件
public static function _autoload($className){
switch ($className){
//自动加载控制器
case substr($className,-3)=='Crl':
$path= CONTROLLER.'/'.$className.'.php';
if(is_file($path)) include $path;
break;
default :
break;
}
}
//定义常量
public static function _set_const(){
//获取框架核心路径 都替换/以便兼容linux
$path=str_replace('\\','//',__FILE__);
//定义常量
define("KJ_CORE",$path); //框架核心路径
define('ROOT_PATH',dirname(dirname(KJ_CORE)));//项目根目录
define('MODULE_PATH',ROOT_PATH.'/'.MODULE);//模块
define('CONTROLLER',MODULE_PATH.'/controller');//定义控制器
define('MODEL',MODULE_PATH.'/model');//定义模型
define('VIEW',MODULE_PATH.'/view');//定义显示成
}
//自动创建模块目录
public static function _mk_module(){
$arr=[
MODULE_PATH,
CONTROLLER,
MODEL,
VIEW,
];
foreach ($arr as $v){
is_dir($v) || mkdir($v,0777,true);
}
}
}
KJ::run();