PHP 的框架众多,对于哪个框架最好,哪个框架最烂,是否应该用框架,对于这些争论在论坛里面都有人争论,这里不做评价,个人觉得根据自己需求,选中最佳最适合自己 MVC 框架,并在开发中能够体现出敏捷开发的效果就 OK 了,作为一个 PHPer 要提高自己的对 PHP 和 MVC 的框架的认识,所以自己写一个 MVC 框架是很有必要的,即使不是很完善,但是自己动手写一个轻量简洁的 PHP MVC 框架起码对 MVC 的思想有一定的了解,而且经过自己后期的完善会渐渐形成一个自己熟悉的一个 PHP 框架。

来写一个《自己动手写 PHP MVC 框架》的简明教程,首先声明,教程里面的框架不是一个完善的框架,只是一种思路,当然每个人对 MVC 框架实现的方法肯定是有差异的,希望高手多提意见多指正,和我一样的菜鸟多讨论多交流,刚接触 MVC 的 PHPer 多学习,如果有需要该教程源码的 PHPer,请下载

下载 自己动手写 PHP MVC 框架教程源码

首先,我们在项目中建立如下目录和文件:

myapp
|-controller 存放控制器文件
|-model 存放模型文件
|-view 存放视图文件
|-lib 存放自定义类库
|-config 存放配置文件
|–config.php 系统配置文件
|-system 系统核心目录
|-index.php 入口文件

新件的 index.php 为入口文件,我们这里采用单一入口,入口文件的内容很简单:

<?php
/**
 * 应用入口文件
 * @copyright   Copyright(c) 2011
 * @author      yuansir
 * @version     1.0
 */
require dirname(__FILE__).'/system/app.php';
require dirname(__FILE__).'/config/config.php';
Application::run($CONFIG);

入口文件主要做了 2 件事,第一引入系统的驱动类,第二是引入配置文件,然后运行 run()方法,传入配置作为参数,具体这 2 个文件是什么内容,我们接下来继续看。

先看一下 config/config.php 文件,里面其实是一个$CONFIG 变量,这个变量存放的全局的配置:

<?php
/**
 * 系统配置文件
 * @copyright   Copyright(c) 2011
 * @author      yuansir
 * @version     1.0
 */

/*数据库配置*/
$CONFIG['system']['db'] = array(
    'db_host'           =>      'localhost',
    'db_user'           =>      'root',
    'db_password'       =>      '',
    'db_database'       =>      'app',
    'db_table_prefix'   =>      'app_',
    'db_charset'        =>      'urf8',
    'db_conn'           =>      '',             //数据库连接标识; pconn 为长久链接,默认为即时链接

);

/*自定义类库配置*/
$CONFIG['system']['lib'] = array(
    'prefix'            =>      'my'   //自定义类库的文件前缀
);

$CONFIG['system']['route'] = array(
    'default_controller'             =>      'home',  //系统默认控制器
    'default_action'                 =>      'index',  //系统默认控制器
    'url_type'                       =>      1          /*定义URL的形式 1 为普通模式    index.php?c=controller&a=action&id=2
                                                         *              2 为PATHINFO   index.php/controller/action/id/2(暂时不实现)
                                                         */
);

/*缓存配置*/
$CONFIG['system']['cache'] = array(
    'cache_dir'                 =>      'cache', //缓存路径,相对于根目录
    'cache_prefix'              =>      'cache_',//缓存文件名前缀
    'cache_time'                =>      1800,    //缓存时间默认1800秒
    'cache_mode'                =>      2,       //mode 1 为serialize ,model 2为保存为可执行文件
);

我这里有意识的定义$CONFIG[‘system’]数组表示是系统的配置文件,当然你可以在里面定义$CONFIG[‘myconfig’]为表示在定义的配置,以后在程序的控制器,模型,视图中来调用,这个很自由。 具体配置值代表什么意思注视很清楚了,下面的如果程序中有详细注释的我就不解释啦,呵呵

转载请注明: 转载自Ryan 是菜鸟 | LNMP 技术栈笔记

如果觉得本篇文章对您十分有益,何不 打赏一下

谢谢打赏

本文链接地址: 自己动手写 PHP MVC 框架(一)

知识共享许可协议 本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可