【学习笔记】基于Composer创建MVC框架(四)—— 设计MVC

参考资料: https://lvwenhan.com/index.php?keyword=composer


这一篇主要记录如何设计 MVC。

  1. 创建目录MFFC/app/controllers

  2. 创建目录MFFC/app/models

  3. 创建目录MFFC/app/views

  4. 创建MFFC/app/controllers/BaseController.php

<?php
namespace MFFC\Controllers;

class BaseController{
	public function __construct(){
	}
}

 5. 创建MFFC/app/controllers/HomeController.php

<?php
namespace MFFC\Controllers;

class HomeController extends BaseController{	
	public function __construct(){
		parent::__construct();
	}
	
	public function home(){
		echo 'Home page!';
	}
}

 6. 修改config/routings.php

<?phpuse NoahBuscher\Macaw\Macaw;

Macaw::get('/', '\MFFC\Controllers\[email protected]');

Macaw::error(function() {
  echo '404 :: Not Found';
});

Macaw::dispatch();

 7. 修改composer.json,使用 PSR-4 标准自动加载类,执行 composer update 命令

{
	"require": {
		"noahbuscher/macaw": "dev-master"
	},
	"repositories": {
	    "packagist": {
	        "type": "composer",
	        "url": "https://packagist.phpcomposer.com"
	    }	},
	"autoload": {
		"psr-4":{
			"MFFC\\Controllers\\": "app/controllers",
			"MFFC\\Models\\": "app/models"
		}	}}

到这里我们已经创建好了控制器,下面我们开始创建view


我们使用twig作为我们的模板引擎,drupal8 默认就是用这个。

官方文档:

http://twig.sensiolabs.org/doc/1.x/

  1. 更新composer.json,执行composer update

"twig/twig": "v1.31.0"

2.修改MFFC/app/controllers/BaseController.php

<?phpnamespace MFFC\Controllers;

class BaseController{
	
	protected $twig = null; 

	public function __construct(){
		$loader = new \Twig_Loader_Filesystem('./app/views');		
		$this->twig = new \Twig_Environment($loader);
	}
}

 3. 修改MFFC/app/controllers/HomeController.php

<?php
namespace MFFC\Controllers;

class HomeController extends BaseController{	
	public function __construct(){
		parent::__construct();
	}	
	public function home(){
		$template = $this->twig->load('home.html');		
		echo $template->render(array('message' => 'This is Home Page. Hello Twig!'));	
	}
}

 4. 添加MFFC/app/views/home.html

{{ message }}

 5. 通过浏览器访问 http://www.mffc.com应该可以看到下面的内容

This is Home Page. Hello Twig!

到目前为止我们已经构建好了 Controller 和 View,下一篇文章我们记录如何构建 Model 层,也就是把前一篇文章讲的doctrine整合到 MFFC 框架里面