使用 composer 构建 PHP 框架之 MVC 设计方法

964 阅读1分钟
原文链接: www.36nu.com

上一篇文章中引进了 codingbean/macaw 这个路由模块,有了路由其他的事情就都好解决了,下面来说一下MVC设计思路。

新建nuf/app文件夹,在app文件夹中创建 controllers、models、views 三个文件夹。

新建controllers/BaseController.php文件:

新建controllers/HomeController.php文件:

在nuf/routes/routes.php文件增加一个路由: Macaw::get('home', 'HomeController@home');

接下来添加自动加载规则,修改 composer.json 为:

{
  "require": {
    "codingbean/macaw": "dev-master"
  },
  "autoload": {
    "classmap": [
      "app/controllers",
      "app/models"
    ]
  }
}

运行 composer dump-autoload,访问nuf.dev/index.php/home,输出success!,说明配置成功。

连接数据库,使用model层读取数据

新建 models/Post.php 文件:

'first testing title','content'=>'first testing content'),
    array('title'=>'second testing title','content'=>'second testing content'),
    );
    return $data;
  }
}

修改controllers/HomeController.php文件:

class HomeController extends BaseController
{
  public function home()
  {
    $data = Post::getPosts;
    var_dump(data);
  }
}

运行 composer dump-autoload,刷新,打印出data数组,至此M层和C层已经实现,接下来我们开始搞定C层:

修改 HomeController:

class HomeController extends BaseController
{
  public function home()
  {
    $data = Post::getPosts;
    require dirname(__FILE__).'/../views/home.php';
  }
}

新建views/home.php文件:

刷新,同样输出data数组,说明view调用成功。其实MVC本质上是入口文件加载控制器文件,控制器文件加载模型文件获取数据处理业务逻辑,然加载视图文件把数据填充进视图。