PHP学习笔记,自己动手写个MVC的框架 -- base所有代码
<?php
/**
名称:基础类
作用:引用参数处理类,加载基础配置,
作者:swordphp@126.com
创建日期:2013-07-31
**/
require_once(ROOT_PATH.'/system/lib/configs/sys_path.config.php');
class base{
public static $sys;
private function __construct(){
return false;
}
public static function getInstance(){
if(!(self::$sys instanceof self)){
self::$sys = new self();
}
return self::$sys;
}
//初始化方法
public static function init(){
self::sys_class('model');
self::sys_class('ctrl');
$args = self::__explan_arg();
$ctrl = self::__load_ctrl($args['m'],$args['c']);
call_user_func(array($ctrl,$args['a']));
}
//加载系统类
public static function sys_class($classname){
$file = SYS_CLASS_DIR.$classname.'.class.php';
if(is_file($file)){
include_once($file);
}else{
exit('class file not found!FILE'.$file);
}
}
//加载数据模型
public function load_model($modelname){
$file = MODEL_DIR.$modelname.".model.class.php";
if(is_file($file)){
include_once $file;
$classname = $modelname.'_model';
return $model = new $classname;
}else{
exit('model file not found!');
}
}
private function __clone(){
//防止单例类被复制
}
//加载系统函数
public static function sys_fun(){ }
//加载配置文件
public static function load_config($dir,$name,$key='default'){
$configs = array();
$file = $dir.$name.'.config.php';
if(is_file($file)){
$configs = include_once($file);
if(isset($configs[$key])){
return $configs[$key];
}else{
exit("config wrong,not found!");
}
}else{
//exit("config file not exist!FILE:".$file);
}
}
//加载系统的配置文件
public static function sys_config($name,$key='default'){
$file = SYS_CONFIG_DIR;
return self::load_config($file,$name,$key);
} private static function __load_class($dir,$name){ }
//加载控制器
//$m是模块名称
//$c是控制器名称
private static function __load_ctrl($m,$c){
$c_dir = MODULES_DIR.$m."/";
if(is_dir($c_dir)){
include($c_dir.$c.'.php');
$classname = 'c_'.$c;
return new $classname;
}else{
exit("modules dir not exist!");
}
}
//解析URL中的参数
private static function __explan_arg(){
$default_arg = self::sys_config('default_arg');
$args['m'] = isset($_GET['m'])?$_GET['m']:$default_arg['m'];
$args['c'] = isset($_GET['c'])?$_GET['c']:$default_arg['c'];
$args['a'] = isset($_GET['a'])?$_GET['a']:$default_arg['a'];
return $args;
}
}
PHP学习笔记,自己动手写个MVC的框架 -- base所有代码的更多相关文章
- PHP学习笔记,自己动手写个MVC的框架
最新在大家自己的博客的过程中,发现各种开源的博客系统都或多或少的用起来别扭.于是想动手自己写个博客系统.既然写,就想好好写.那就先写个MVC框架.一点一点来.写的过程中有很多想法.还希望大家能够多多指 ...
- iOS学习笔记-自己动手写RESideMenu
代码地址如下:http://www.demodashi.com/demo/11683.html 很多app都实现了类似RESideMenu的效果,RESideMenu是Github上面一个stars数 ...
- 自己动手写PHP MVC框架
自己动手写PHP MVC框架 来自:yuansir-web.com / yuansir@live.cn 代码下载: https://github.com/yuansir/tiny-php-framew ...
- java之jvm学习笔记五(实践写自己的类装载器)
java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...
- .NET MVC 学习笔记(一)— 新建MVC工程
一..NET MVC 学习笔记(一)—— 新建MVC工程 接触MVC有段时间了,一直想找机会整理一下,可是限于文笔太差,所以一直迟迟羞于下手,想到最近做过的MVC项目也有一些了,花点时间整理一下方便以 ...
- 自己动手写Android插件化框架
自己动手写Android插件化框架 转 http://www.imooc.com/article/details/id/252238 最近在工作中接触到了Android插件内的开发,发现自己这种技 ...
- ASP.Net MVC开发基础学习笔记:一、走向MVC模式
一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/bl ...
- Backbone学习笔记一Backbone中的MVC
原文章地址http://bigdots.github.io/2015/12/01/Backbone学习笔记(一)/#more Backbone.js为复杂WEB应用程序提供模型(models).集合( ...
- 【Spring学习笔记-MVC-15.1】Spring MVC之异常处理=404界面
作者:ssslinppp 异常处理请参考前篇博客:<[Spring学习笔记-MVC-15]Spring MVC之异常处理>http://www.cnblogs.com/sssl ...
随机推荐
- [ofbiz]解决load-demo花费过长时间的问题
一直以来使用公司配置的hp-cq45笔记本,在初始化ofbiz的时候load-demo需要花费很长一段时间,比如90分钟,或者129分钟. 解决办法:安装官方驱动--intel快速存储驱动 ok,lo ...
- IE6 双倍距BUG
IE6双倍距BUG的形成: 1.快元素 2.元素浮动 3.margin左右 解决方案:_display:inline;
- 常见的SQL字符串函数
1.LEN:计算字符串的长度(字符的个数) select len('哈哈hello') 返回长度为7 2.datalength();计算字符串所占用的字节数,不属于字符串函数 select DATAL ...
- 【转】Objective-C 与 Runtime:为什么是这样?
原文地址: http://t.cn/RyyNIXd?u=2483713130&m=3884400301576073&cu=2483713130 笔者非常高兴能为Objective-C写 ...
- 为什么选择使用 Dropbox 而不是其他品牌同步工具(不要加上多余的功能,要极致和专注)
作者:吴锋链接:http://www.zhihu.com/question/19646859/answer/14707821来源:知乎著作权归作者所有,转载请联系作者获得授权. 窃以为楼主的问题,准确 ...
- icmp的报文,Destination Host Unreachable
icmp的报文,Destination Host Unreachable的意思如下: http://www.corenetworkz.com/2009/05/destination-host-unre ...
- kabina启动配置
启动 kibana # /usr/local/kibana-4.1.1-linux-x64/bin/kibana zjtest7-redis:/usr/local/kibana-4.5.3-linux ...
- MFC修改任务栏图标及程序运行exe图标
修改左上角的图标和任务栏里图标 在对话框构造函数中 1 CTestDlg::CTestDlg(CWnd* pParent )2 : CDialog(CTestDlg::IDD, pParent)3 { ...
- 百度地图LV1.5实践项目开发工具类bmap.util.jsV1.0
/** * 百度地图使用工具类-v1.5 * * @author boonya * @date 2013-7-7 * @address Chengdu,Sichuan,China * @email b ...
- HDOJ-1009 FatMouse' Trade
http://acm.hdu.edu.cn/showproblem.php?pid=1009 # include <stdio.h> # include <algorithm> ...