zoukankan      html  css  js  c++  java
  • 简单的单入口MVC的实现

    MVC就不多说了,网上到处都是,各种framework基本都是基于mvc的,但是学习一个模板的代价也挺大的,而且效率也是个问题,所以我就自己实现了一下。

    先来看看index.php,一共三句话,当然这是最基本的,其他功能可以自己扩展

    PHP代码
    1. require("config.php");   
    2. require("function.php");   
    3. require("dispatcher.php");  

    再来看看config.php,里面定义了一些常量

    PHP代码
    1. //server info   
    2. define("HOST","localhost");   
    3. define("USER","root");   
    4. define("PASSWORD","123456");   
    5. define("DATABASE","article");   
    6.     
    7. //path info   
    8. define("INCLUDE_PATH",dirname(__FILE__));   
    9.     
    10. //controller   
    11. define("CONTROLLER_PATH",INCLUDE_PATH."/controller");  

    function.php里定义了一些基本的函数

    PHP代码
    1. //format exception   
    2. function format_exception(Exception $e){   
    3.       print <<<EOT   
    4.       <div style="margin:200px auto;400px;border:1px solid #D5924D;background:#EFEBE7;font-size:14px;text-align:center;padding:20px">   
    5. {$e->getMessage()}</div>   
    6.       <!–<meta HTTP-EQUIV=REFRESH CONTENT=‘1; URL=javascript:history.go(-1)’>–>   
    7. EOT;   
    8. die();   
    9. }   
    10.     
    11. //get controller and init controller   
    12. function get_controller($controller_name){   
    13.       if(!file_exists(CONTROLLER_PATH."/{$controller_name}.php")){   
    14.             throw new Exception("there is no such a controller named <font color=red>$controller_name</font>");   
    15.       }   
    16.       else{   
    17.             require(CONTROLLER_PATH."/{$controller_name}.php");   
    18.       }   
    19.       if(!class_exists($controller_name)){   
    20.             throw new exception("there is no class named {$controller_name}");   
    21.       }   
    22. }   

    最后来看看dispatch.php,主要是引入目标文件,并实例化

    PHP代码
    1. $controller = $_GET["controller"]."Controller";   
    2. $action = isset($_GET["action"])?$_GET["action"]."Action":"indexAction";   
    3. try{   
    4.       get_controller($controller);   
    5.          
    6.       $controller = new $controller();   
    7.          
    8.       $controller->$action();   
    9.     
    10. }   
    11.     
    12. catch(Exception $e){   
    13.       format_exception($e);   
    14. }   

    文件格式
    controller的命名规则是:控制器名+”Controller”,比如:”articleController”,方法的命名规则是:方法名+”Action”,比如:”readAction”

    没有写入model功能,这个只需在controller里引入就行了,比如
    require(INCLUDE_PATH.”/model/articleModel.php”);

    调用的时候url就像这样:”http://www.xxxx.com/index.php?controller=article&action=read”,如果要加入其他参数,加在后面就行了,可以顺利传到相应的action。

    最后为了防止直接从controller文件夹浏览,可以加入.htaccess,内容如下

    PHP代码
    1. order deny,allow   
    2. deny from all
  • 相关阅读:
    《Linux shell变量总结回顾》RHEL6(转)
    20个最受欢迎的Linux命令(转)
    如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧(转)
    妻共贫贱难,夫共富贵难
    [置顶] 阅读Oracle官方文档指南
    Java实现 蓝桥杯 算法训练 递归求二项式系数
    Java实现 蓝桥杯 算法训练 数字三角形
    Java实现 蓝桥杯 算法训练 数字三角形
    Java实现 蓝桥杯 算法训练 数字三角形
    Java实现 蓝桥杯 算法训练 数字三角形
  • 原文地址:https://www.cnblogs.com/kuyuecs/p/1274581.html
Copyright © 2011-2022 走看看