前面框架已经可以通过路由访问了,我们总不可能把业务写在各个路由的回调里面吧,所以需要按一般框架实现MVC.
新增目录application,application目录下新建model,controller,view,开始我们的MVC
进入controller,新增类CommonController
params = $_POST;
}
}
?>
新增类IndexController继承CommmonController
namespace Application\controller;
class IndexController extends CommonController
{
public function Welcome()
{
echo "hello";
}
}
?>
打开config/routes.php,配置路由指向Controller
原来的路由
配置后的路由
use NoahBuscher\Macaw\Macaw;
Macaw::get('index/welcome', 'Application\controller\IndexController@Index');
Macaw::get('(:all)', function ($fu) {
echo 'invalid routes' . $fu;
});
Macaw::dispatch();
访问下http://127.0.0.14016/index/welcome,结果
Class 'Application\controller\IndexController' not found
为什么呢,原来我们框架还没配置PSR-4规范(也可以用PSR-0规范去处理,但是不推荐)
打开composer.json,配置命名空间指向目录
修改前
{
"name": "root/sh_framework",
"require": {
"noahbuscher/macaw": "dev-master"
}
}
修改后
{
"name": "root/framework",
"require": {
"noahbuscher/macaw": "dev-master"
},
"autoload": {
"psr-4": {
"Application\\": "application/"
}
}
}
运行
/usr/local/bin/php composer.phar dump-autoload
这个时候,就把我们的命名空间指向到对应的目录里面了,继续访问上面的路由看看会不会输出:hello
这个时候,我们的model也可以使用了,一个简单的api框架已完成。
我们的view可以直接PHP输出,如在view目录下新建welcome.php
修改下IndexController的welcome方法,require你的welcome.php
结果会输出:这是一个view
发表评论