利用composer构建MVC框架

1.基础准备

新建文件夹test,在文件夹下新建文件 composer.json:

{
  "require": {
  }
}

命令行切换到 test 目录下,运行:

composer update

出现文件夹vendor,Composer 初始化成功!

 2.构建路由

框架的本质就是路由

开始自己来构建路由,先去 GitHub 搜一下:点此查看搜索结果

使用noahbuscher/Macaw

更改 composer.json:

{
  "require": {
    "noahbuscher/macaw": "dev-master"
  }
}

运行 composer update,test/vender得到目录noahbuscher,Macaw 包安装成功!

新建test/web 文件夹,这个文件夹将是用户唯一可见的部分。在文件夹下新建 index.php 文件:

<?php
    //自动载入
    require '../vendor/autoload.php';
    //路由配置
    require '../config/routes.php';
?>

新建 test/config 文件夹,在里面新建 routs.php 文件

<?php
  use \NoahBuscher\Macaw\Macaw;
  Macaw::get('/', function() {
    echo 'Hello world!';
  });
  Macaw::get('(:all)', function($fu) {
    echo '未匹配到路由<br>'.$fu;
  });
  Macaw::dispatch();
?>

在地址栏,输入127.0.0.1/test/web/

出现Hello world!

3.设计MVC

新建 test/app 文件夹,在 app 中创建 controllers、models、views 三个文件夹,开始正式开始MVC 

(1)Controller

新建 controllers/BaseController.php 文件:

<?php
/**
* BaseController
*/
class BaseController
{
  public function __construct()
  {
  }
}

新建 controllers/HomeController.php 文件:

<?php
/**
* \HomeController
*/
class HomeController extends BaseController
{
  public function home()
  {
    echo "<h1>控制器成功!</h1>";
  }
}

rotues.php中添加一条路由,Macaw::get('/', 'HomeController@home');

运行 composer dump-autoload 

刷新

(2)Model

新建 models/Article.php 文件

<?php
    error_reporting(E_ALL ^ E_DEPRECATED);
    class Article{    
        public static function first(){
        $connection=mysql_connect("localhost",'root','root');
            if(!$connection){
                die('Could not connect:'.mysql_error());
            }
            mysql_set_charset("UTF8",$connection);
            mysql_select_db("lulucms",$connection);
            $result=mysql_query("select * from yii_page limit 0,1");
            if($row=mysql_fetch_array($result)){
                echo '<h1>'.$row['title'].'</h1>';
                echo '<p>'.$row['summary'].'</p>';
            }
            mysql_close($connection);
        }
    }
?>            

修改controllers/HomeController.php 文件:

<?php
    class HomeController extends BaseController{
        public function home(){
            Article::first();
        }
    }
?>
运行composer dump-autoload
刷新

(3)View

修改 models/Article.php 为:

<?php
    error_reporting(E_ALL ^ E_DEPRECATED);
    class Article{    
        public static function first(){
            $connection=mysql_connect("localhost",'root','root');
            if(!$connection){
                die('Could not connect:'.mysql_error());
            }
            mysql_set_charset("UTF8",$connection);
            mysql_select_db("lulucms",$connection);
            $result=mysql_query("select * from yii_page limit 0,1");
            if($row=mysql_fetch_array($result)){
                return $row;
            }
            mysql_close($connection);
        }
    }
?>    

修改 HomeController:

<?php
    class HomeController extends BaseController{
        public function home(){
            $row=Article::first();
            require dirname(__FILE__).'/../views/home.php';
        }
    }
?>

新建 views/home.php 文件

<?php
  echo '<h1>'.$row['title'].'</h1>';
  echo '<p>'.$row['summary'].'</p>';
?>

刷新

MVC构造完成

 4.数据库封装--使用ORM 包

 使用Laravel 的 Eloquent 

 安装 illuminate/database

 给 composer.json 增加一个 require 项

"illuminate/database": "*"

修改 web/index.php 

<?php
    use Illuminate\Database\Capsule\Manager as Capsule;
    //自动载入
    require '../vendor/autoload.php';
    //
    $capsule=new Capsule;
    $capsule->addConnection(require '../config/database.php');
    $capsule->bootEloquent();
    //路由配置
    require '../config/routes.php';
?>

新增 config/database.php

<?php
    return [
        'driver'=>'mysql',
        'host'=>'localhost',
        'database'=>'lulucms',
        'username'=>'root',
        'password'=>'root',
        'charset'=>'utf8',
        'collation'=>'utf8_general_ci',
        'prefix'=>'yii_'
    ];
?>

修改 models/Article.php 

<?php
    class Article extends Illuminate\Database\Eloquent\Model{
        public $timestamps=false;
        protected $table = 'page';
    }
?>

controllers/HomeController.php 无需改动

刷新

框架构造完成

Eloquent ORM 中文文档

posted @ 2015-10-26 11:59  慕尘  阅读(509)  评论(0编辑  收藏  举报