<?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所有代码的更多相关文章

  1. PHP学习笔记,自己动手写个MVC的框架

    最新在大家自己的博客的过程中,发现各种开源的博客系统都或多或少的用起来别扭.于是想动手自己写个博客系统.既然写,就想好好写.那就先写个MVC框架.一点一点来.写的过程中有很多想法.还希望大家能够多多指 ...

  2. iOS学习笔记-自己动手写RESideMenu

    代码地址如下:http://www.demodashi.com/demo/11683.html 很多app都实现了类似RESideMenu的效果,RESideMenu是Github上面一个stars数 ...

  3. 自己动手写PHP MVC框架

    自己动手写PHP MVC框架 来自:yuansir-web.com / yuansir@live.cn 代码下载: https://github.com/yuansir/tiny-php-framew ...

  4. java之jvm学习笔记五(实践写自己的类装载器)

    java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...

  5. .NET MVC 学习笔记(一)— 新建MVC工程

    一..NET MVC 学习笔记(一)—— 新建MVC工程 接触MVC有段时间了,一直想找机会整理一下,可是限于文笔太差,所以一直迟迟羞于下手,想到最近做过的MVC项目也有一些了,花点时间整理一下方便以 ...

  6. 自己动手写Android插件化框架

    自己动手写Android插件化框架 转 http://www.imooc.com/article/details/id/252238   最近在工作中接触到了Android插件内的开发,发现自己这种技 ...

  7. ASP.Net MVC开发基础学习笔记:一、走向MVC模式

    一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/bl ...

  8. Backbone学习笔记一Backbone中的MVC

    原文章地址http://bigdots.github.io/2015/12/01/Backbone学习笔记(一)/#more Backbone.js为复杂WEB应用程序提供模型(models).集合( ...

  9. 【Spring学习笔记-MVC-15.1】Spring MVC之异常处理=404界面

    作者:ssslinppp       异常处理请参考前篇博客:<[Spring学习笔记-MVC-15]Spring MVC之异常处理>http://www.cnblogs.com/sssl ...

随机推荐

  1. JS--switch 语句

    说明:js中switch语句的语法风格 function convert(x){ switch(x) { case "string": document.write("s ...

  2. instancetype和id的区别

    一.什么是instancetype instancetype是clang 3.5开始,clang提供的一个关键字,表示某个方法返回的未知类型的Objective-C对象.我们都知道未知类型的的对象可以 ...

  3. 把所有的QT的类都过一遍脑子

    http://doc.qt.io/qt-5/classes.html 这样就明白QT提供的全部功能了,避免重复造轮子,或者给自己开发带来麻烦-

  4. Eclipse总是自动关闭

    -Dosgi.requiredJavaVersion=1.5把INI文件中的这一行删除掉,貌似这样以后模拟器也没再出现timeout的问题了,O(∩_∩)O哈哈~

  5. Remove Duplicates from Sorted Array 解答

    Question Given a sorted array, remove the duplicates in place such that each element appear only onc ...

  6. 小KING教你做android项目(一)

    写在项目开始之前: 最近关于android的视频教程,入门的书籍也已经有很多了,例如我的入门就是看了mars的视频教程.但是这么一圈学习下来,觉得真正快速提高的,不是在看视频,而是在实际工作中动手做项 ...

  7. Zookeeper 4、Zookeeper开发

    1.登录Zookeeper客户端 #通过zkCli.sh可以登录到Zookeeper $ cd /usr/local/zookeeper-3.4.6/bin $ ./zkCli.sh #如果显示下面这 ...

  8. Xshell不能连接SSH的解决

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 重新启动看看:/etc/init.d/ssh restart (/etc/ini ...

  9. Unity 编辑器扩展自定义窗体

    这次看见Unity还可以自定义弹出窗体,让我很好奇.于是就去网上找文章看了看. 如果想自定义窗体需要把类放入Editor文件夹下面. 代码如下: using UnityEngine; using Un ...

  10. android面试题之五

    二十六.什么情况会导致Force Close ?如何避免?能否捕获导致其的异常? 抛出运行时异常时就会导致Force Close,比如空指针.数组越界.类型转换异常等等. 捕获:可以通过logcat查 ...