zoukankan      html  css  js  c++  java
  • phpMVC框架的核心启动类定义

    <?php
    //核心启动类
    class Framework {
    //定义一个run方法
    public static function run(){
    // echo "hello,wrold!";
    self::init();
    self::autoload();
    self::dispatch();
    }

    //初始化方法
    private static function init(){
    //定义路径常量
    define("DS", DIRECTORY_SEPARATOR);
    define("ROOT", getcwd() . DS ); //根目录
    define("APP_PATH", ROOT . 'application' . DS);
    define("FRAMEWORK_PATH", ROOT . "framework" .DS);
    define("PUBLIC_PATH", ROOT . "public" .DS);
    define("CONFIG_PATH", APP_PATH . "config" .DS);
    define("CONTROLLER_PATH", APP_PATH . "controllers" .DS);
    define("MODEL_PATH", APP_PATH . "models" .DS);
    define("VIEW_PATH", APP_PATH . "views" .DS);
    define("CORE_PATH", FRAMEWORK_PATH . "core" .DS);
    define("DB_PATH", FRAMEWORK_PATH . "databases" .DS);
    define("LIB_PATH", FRAMEWORK_PATH . "libraries" .DS);
    define("HELPER_PATH", FRAMEWORK_PATH . "helpers" .DS);
    define("UPLOAD_PATH", PUBLIC_PATH . "uploads" .DS);
    //获取参数p、c、a,index.php?p=admin&c=goods&a=add GoodsController中的addAction
    define('PLATFORM',isset($_GET['p']) ? $_GET['p'] : "admin");
    define('CONTROLLER',isset($_GET['c']) ? ucfirst($_GET['c']) : "Index");
    define('ACTION',isset($_GET['a']) ? $_GET['a'] : "index");
    //设置当前控制器和视图目录 CUR-- current
    define("CUR_CONTROLLER_PATH", CONTROLLER_PATH . PLATFORM . DS);
    define("CUR_VIEW_PATH", VIEW_PATH . PLATFORM . DS);

    //载入配置文件
    $GLOBALS['config'] = include CONFIG_PATH . "config.php";

    //载入核心类
    include CORE_PATH . "Controller.class.php";
    include CORE_PATH . "Model.class.php";
    include DB_PATH . "Mysql.class.php";
    }

    //路由方法,说白了,就是实例化对象并调用方法
    //index.php?p=admin&c=goods&a=add GoodsController中的addAction
    private static function dispatch(){
    //获取控制器名称
    $controller_name = CONTROLLER . "Controller";
    //获取方法名
    $action_name = ACTION . "Action";
    //实例化控制器对象
    $controller = new $controller_name();
    //调用方法
    $controller->$action_name();
    }

    //注册为自动加载
    private static function autoload(){
    // $arr = array(__CLASS__,'load');
    spl_autoload_register('self::load');
    }

    //自动加载功能,此处我们只实现控制器和数据库模型的自动加载
    //如GoodsController、 GoodsModel
    private static function load($classname){
    if (substr($classname, -10) == 'Controller') {
    //载入控制器
    include CUR_CONTROLLER_PATH . "{$classname}.class.php";
    } elseif (substr($classname, -5) == 'Model') {
    //载入数据库模型
    include MODEL_PATH . "{$classname}.class.php";
    } else {
    //暂略
    }
    }

    }

  • 相关阅读:
    LeetCode 295. Find Median from Data Stream (堆)
    LeetCode 292. Nim Game(博弈论)
    《JavaScript 模式》读书笔记(4)— 函数2
    《JavaScript 模式》读书笔记(4)— 函数1
    《JavaScript 模式》读书笔记(3)— 字面量和构造函数3
    《JavaScript 模式》读书笔记(3)— 字面量和构造函数2
    《JavaScript 模式》读书笔记(3)— 字面量和构造函数1
    《JavaScript 模式》读书笔记(2)— 基本技巧3
    《JavaScript 模式》读书笔记(2)— 基本技巧2
    《JavaScript 模式》读书笔记(2)— 基本技巧1
  • 原文地址:https://www.cnblogs.com/lvlina/p/5842222.html
Copyright © 2011-2022 走看看