1、实现效果
2、创建三个function.php
3、文件加载(KJ.php)
定义目录文章来源:https://www.toymoban.com/news/detail-650972.html
define("FILE_PATH",KJ_CORE.'/file'); //定义框架文件路径
define("COMMON_PATH",ROOT_PATH.'/common'); //定义公共目录
加载文件文章来源地址https://www.toymoban.com/news/detail-650972.html
public static function run(){
//定义常量
self::_set_const();
//创建模块目录
self::_mk_module();
//加载文件
self::_import_file();
//类自动加载
spl_autoload_register(array(__CLASS__,'_autoload'));
//运行框架
self::_run();
}
//加载文件
private static function _import_file(){
$fileArr=array(
FILE_PATH.'/function.php',
COMMON_PATH.'/function.php',
MODULE_PATH.'/function.php',
);
foreach ($fileArr as $v){
if(is_file($v)){
require_once $v;
}
}
}
4、dump方法实现,file下面function.php
<?php
function dump($arr){
if(is_bool($arr)){
var_dump($arr);
}else if(is_null($arr)){
var_dump(NULL);
}else{
echo '<pre style="padding: 10px;border-radius: 5px;background: #f5f5f5;border:1px solid #ccc;font-size: 14px;">'.print_r($arr,true).'</pre>';
}
}
5、框架iindexCrl.php调用dump
<?php
class indexCrl extends CrlBase {
public function index(){
$arr=['a'=>1,'b'=>2];
dump($arr);
}
}
6、完整KJ.php
<?php
final class KJ{
public static function run(){
//定义常量
self::_set_const();
//创建模块目录
self::_mk_module();
//加载文件
self::_import_file();
//类自动加载
spl_autoload_register(array(__CLASS__,'_autoload'));
//运行框架
self::_run();
}
//加载文件
private static function _import_file(){
$fileArr=array(
FILE_PATH.'/function.php',
COMMON_PATH.'/function.php',
MODULE_PATH.'/function.php',
);
foreach ($fileArr as $v){
if(is_file($v)){
require_once $v;
}
}
}
//运行控制器中方法
public static function _run(){
$c=strtolower(isset($_GET['c'])?$_GET['c']:'index');
$a=strtolower(isset($_GET['a'])?$_GET['a']:'index');
define('CRL',$c); //当前控制器
define('ACTION',$a);//当前方法
$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){
//自动model类
case substr($className,-5)=='Model':
$path= MODEL.'/'.$className.'.php';
if(is_file($path)) include $path;
break;
//自动加载控制器
case substr($className,-3)=='Crl':
$path= CONTROLLER.'/'.$className.'.php';
if(is_file($path)) include $path;
break;
//自动加载基类
case substr($className,-4)=='Base':
$path= KJ_CORE.'/base/'.$className.'.php';
if(is_file($path)) include $path;
break;
default :
break;
}
}
//定义常量
public static function _set_const(){
//获取框架核心路径 都替换/以便兼容linux
$path=str_replace('\\','//',__FILE__);
//定义常量
define("KJ_CORE",dirname($path)); //框架核心路径
define('ROOT_PATH',dirname(KJ_CORE));//项目根目录
define('MODULE_PATH',ROOT_PATH.'/'.MODULE);//模块
define('CONTROLLER',MODULE_PATH.'/controller');//定义控制器
define('MODEL',MODULE_PATH.'/model');//定义模型
define('VIEW',MODULE_PATH.'/view');//定义显示
define('EXTEND',KJ_CORE.'/extend');//定义扩建路径
define('CACHE',ROOT_PATH.'/cache');//定义缓存路径
//模板编译目录
define('APP_COMPILE_PATH',CACHE.'/view/'.MODULE.'/Compile');
//模板缓存
define('APP_CACHE_PATH',CACHE.'/view/'.MODULE.'/Cache');
define("FILE_PATH",KJ_CORE.'/file'); //定义框架文件路径
define("COMMON_PATH",ROOT_PATH.'/common'); //定义公共目录
}
//自动创建模块目录
public static function _mk_module(){
$arr=[
MODULE_PATH,
CONTROLLER,
MODEL,
VIEW,
];
foreach ($arr as $v){
is_dir($v) || mkdir($v,0777,true);
}
}
}
KJ::run();
到了这里,关于PHP自己的框架实现function引入和dump函数(完善篇一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!