82)PHP,基本框架类步骤

framework.class.php

        

基本代码展示:

    

  1 <?php
  2
  3 /**
  4  * 框架初始化功能类
  5  */
  6 class Framework {
  7     /**
  8      * 入口      * 里面的static和self是一样的,都是表示当前类
  9      */
 10     public static function run() {
 11         //声明路径常量
 12         static::_initPathConst();
 13         //确定分发参数
 14         static::_initDispatchParam();
 15         // 当前平台相关的路径常量
 16         static::_initPlatformPathConst();
 17         // 注册自动加载
 18         static::_initAutoload();
 19
 20         // 请求分发
 21         static::_dispatch();
 22     }
 23
 24     /**
 25      * 声明路径常量
 26      */
 27     private static function _initPathConst() {
 28         //目录基础常量的定义
 29         define(‘ROOT_PATH‘, getCWD() . ‘/‘);//getCWD()获得当前目录
 30         define(‘APPLICTION_PATH‘, ROOT_PATH . ‘application/‘);
 31         define(‘FRAMEWORK_PATH‘, ROOT_PATH . ‘framework/‘);
 32         define(‘TOOL_PATH‘, FRAMEWORK_PATH . ‘tool/‘);
 33     }
 34     /**
 35      * 初始化分发参数
 36      */
 37     private static function _initDispatchParam() {
 38         // 确定分发参数
 39         // 平台
 40         $default_platform = ‘back‘;
 41         define(‘PLATFORM‘, isset($_GET[‘p‘]) ? $_GET[‘p‘] : $default_platform);
 42         // 控制器类
 43         $default_controller = ‘Manage‘;
 44         define(‘CONTROLLER‘, isset($_GET[‘c‘]) ? $_GET[‘c‘] : $default_controller);
 45         // 动作
 46         $default_action = ‘index‘;
 47         define(‘ACTION‘, isset($_GET[‘a‘]) ? $_GET[‘a‘] : $default_action);
 48     }
 49     /**
 50      * 声明当前平台路径常量
 51      */
 52     private static function _initPlatformPathConst() {
 53         //当前平台相关的路径常量
 54         define(‘CURRENT_CONTROLLER_PATH‘, APPLICTION_PATH . PLATFORM . ‘/controller/‘);
 55         define(‘CURRENT_MODEL_PATH‘, APPLICTION_PATH . PLATFORM . ‘/model/‘);
 56         define(‘CURRENT_VIEW_PATH‘, APPLICTION_PATH . PLATFORM . ‘/view/‘);
 57     }
 58     /**
 59      * 自动加载方法
 60      */
 61     public static function userAutoload($class_name) {
 62         //先处理确定的(框架中的核心类)
 63         // 类名与类文件映射数组
 64         $framework_class_list = array(
 65             // ‘类名‘ => ‘类文件地址‘
 66             ‘Controller‘     => FRAMEWORK_PATH . ‘Controller.class.php‘,
 67             ‘Model‘         => FRAMEWORK_PATH . ‘Model.class.php‘,
 68             ‘Factory‘         => FRAMEWORK_PATH . ‘Factory.class.php‘,
 69             ‘MySQLDB‘         => FRAMEWORK_PATH . ‘MySQLDB.class.php‘,
 70             ‘SessionDB‘        => TOOL_PATH . ‘SessionDB.class.php‘,
 71             ) ;
 72         //判断是否为核心类
 73         if (isset($framework_class_list[$class_name])) {
 74             //是核心类
 75             require $framework_class_list[$class_name];
 76         }
 77         //判断是否为可增加(控制器类,模型类)
 78         //控制器类,截取后是个字符,匹配Controller
 79         elseif (substr($class_name, -10) == ‘Controller‘) {
 80             // 控制器类, 当前平台下controller目录
 81             require CURRENT_CONTROLLER_PATH . $class_name . ‘.class.php‘;
 82         }
 83         //模型类,截取后5个字符,匹配Model
 84         elseif (substr($class_name, -5) == ‘Model‘) {
 85             // 模型类,当前平台下model目录
 86             require CURRENT_MODEL_PATH . $class_name . ‘.class.php‘;
 87         }
 88     }
 89     /**
 90      * 注册自动加载
 91      */
 92     private static function _initAutoload() {
 93         spl_autoload_register(array(__CLASS__, ‘userAutoload‘));
 94     }
 95     /**
 96      * 分发请求
 97      */
 98     private static function _dispatch() {
 99         //实例化控制器类,并调用动作方法
100         $controller_name = CONTROLLER . ‘Controller‘;
101         //实例化
102         $controller = new $controller_name();//可变类
103         //调用方法(action动作)
104         //拼凑当前的方法动作名字符串
105         $action_name = ACTION . ‘Action‘;
106         $controller->$action_name();//可变方法
107     }
108 }
时间: 2024-10-10 21:45:12

82)PHP,基本框架类步骤的相关文章

利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)

最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口: 1.public Connection getConnection()   获得数据库的连接 2.public boolean updateByPreparedStatement(String sql, List<Object>params)throws SQLException  更新数据库

【转载】如何写一个框架:步骤(下)

说明:写本文的时候作者完全是把脑子里的东西写了出来,没有参考任何的资料,所以对于每一项内容可能都是不完整的,不能作为一个完整的参考.有一些方法学的东西每个人都有自己的喜好,没有觉得的对和错. 单元测试 在这之前我们写的框架只能说是一个在最基本的情况下可以使用的框架,作为一个框架我们无法预测开发人员将来会怎么使用它,所以我们需要做大量的工作来确保框架不但各种功能都是正确的,而且还是健壮的.写应用系统的代码,大多数项目是不会去写单元测试的,原因很多: 项目赶时间,连做一些输入验证都没时间搞,哪里有时

Struts2.0 框架搭建步骤详解

实现了MVC思想的struts框架,主要分三层结构,即:view->controller->model,三者互相传递数据,实现了数据在前台和后台的转换,验证,展示,存储. 搭建struts框架的步骤如下: 1.在myeclipse中新建Java项目,删除项目中的源文件src,建立普通文件,将Struts解压后的jar包复制在新建的普通文件夹中. 2.新建web项目,右键选择build path->add jars(不是导入外部第三方的jar包) 选择第一步新建的Java项目,将里面的Ja

使用Spring框架的步骤

“好记性,不如烂笔头”.今天正式接触了Spring框架,第一次接触Spring框架感觉Spring框架简化了好多程序代码,开发效率大大提高.现在介绍使用Spring框架的步骤.(使用spring-framework-2.5.6版本) 1.导入jar包:找到压缩包里边的dist/Spring.jar:然后再找到 lib\jakarta-commons\commons-logging.jar 2.编写spring配置文件....:添加一个bean(将一个类/依赖对象交给spring来维护和创建) <

c#中创建IOC框架的步骤(无参,Ninject容器)

创建无参的IOC框架 步骤: 1. 一个接口 2. 通过创建一个实体类显示接口 3. 再创建一个类制造构造函数(并将接口作为参数传递),再此类中创建一个无返回值的方法,调用接口里的方法 4. 在Main里面写代码: 1) 用接口new出创建接口实体的类. 2) 把创建构造函数的类名new出来,将1)的对象写入括号中. 3) 调用2)的无返回值方法. 第一步,定义一个接口: namespace NInjectEmail { interface ISendMsg { void SendEmail()

黑马程序员-----集合框架类(三) Map集合

黑马程序员-----集合框架类(三) Map集合 1.1 Map集合:该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 1,添加. put(K key, V value) putAll(Map<? extends K,? extends V> m) 2,删除. clear() remove(Object key) 3,判断. containsValue(Object value) containsKey(Object key) isEmpty() 4,获取. get(Object ke

MFC框架类、文档类、视图类相互访问的方法

1.获取应用程序指针 CMyApp* pApp=(CMyApp*)AfxGetApp(); 2.获取主框架指针 CWinApp 中的公有成员变量 m_pMainWnd 就是主框架的指针 CMainFrame* pMainFrame = (CMainFrame*)(AfxGetApp()->m_pMainWnd); 或者 CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd(); 3.获取菜单指针 CMenu* pMenu = AfxGetMain

IOS-整体框架类图

Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助. 1.Cocoa是什么? Cocoa是OS X和 iOS操作系统的程序的运行环境. 是什么因素使一个程序成为Cocoa程序呢?不是编程语言,因为在Cocoa开发中你可以使用各种语言:也不是开发工具,你可以在命令行上就可以创建Cocoa程序.Cocoa程序可以这么说,它是由一些对象组成,而这些对象的类最后都是继承于它们的根类 :NSObject.而且它们都是基于Objective-C运行环境的. 1.1.Coc

IOS 整体框架类图值得收藏

Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助. 1.Cocoa是什么? Cocoa是OS X和 iOS操作系统的程序的运行环境. 是什么因素使一个程序成为Cocoa程序呢?不是编程语言,因为在Cocoa开发中你可以使用各种语言:也不是开发工具,你可以在命令行上就可以创建Cocoa程序.Cocoa程序可以这么说,它是由一些对象组成,而这些对象的类最后都是继承于它们的根类 :NSObject.而且它们都是基于Objective-C运行环境的. 1.1.Coc