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 ...
随机推荐
- JS--switch 语句
说明:js中switch语句的语法风格 function convert(x){ switch(x) { case "string": document.write("s ...
- instancetype和id的区别
一.什么是instancetype instancetype是clang 3.5开始,clang提供的一个关键字,表示某个方法返回的未知类型的Objective-C对象.我们都知道未知类型的的对象可以 ...
- 把所有的QT的类都过一遍脑子
http://doc.qt.io/qt-5/classes.html 这样就明白QT提供的全部功能了,避免重复造轮子,或者给自己开发带来麻烦-
- Eclipse总是自动关闭
-Dosgi.requiredJavaVersion=1.5把INI文件中的这一行删除掉,貌似这样以后模拟器也没再出现timeout的问题了,O(∩_∩)O哈哈~
- Remove Duplicates from Sorted Array 解答
Question Given a sorted array, remove the duplicates in place such that each element appear only onc ...
- 小KING教你做android项目(一)
写在项目开始之前: 最近关于android的视频教程,入门的书籍也已经有很多了,例如我的入门就是看了mars的视频教程.但是这么一圈学习下来,觉得真正快速提高的,不是在看视频,而是在实际工作中动手做项 ...
- Zookeeper 4、Zookeeper开发
1.登录Zookeeper客户端 #通过zkCli.sh可以登录到Zookeeper $ cd /usr/local/zookeeper-3.4.6/bin $ ./zkCli.sh #如果显示下面这 ...
- Xshell不能连接SSH的解决
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 重新启动看看:/etc/init.d/ssh restart (/etc/ini ...
- Unity 编辑器扩展自定义窗体
这次看见Unity还可以自定义弹出窗体,让我很好奇.于是就去网上找文章看了看. 如果想自定义窗体需要把类放入Editor文件夹下面. 代码如下: using UnityEngine; using Un ...
- android面试题之五
二十六.什么情况会导致Force Close ?如何避免?能否捕获导致其的异常? 抛出运行时异常时就会导致Force Close,比如空指针.数组越界.类型转换异常等等. 捕获:可以通过logcat查 ...