到目前,我们已经为框架添加了路由的简单控制,接下来实现一下路由和控制器之间的映射控制。
构建控制器
在根目录下创建app/controllers/目录,并创建控制器文件Demo.php
<?php
namespace controllers;
class Demo {
public function index()
{
echo 'Demo home';
}
public function page()
{
echo 'Demo page';
}
public function view($id)
{
echo $id;
}
}
添加路由
Macaw::get('index', 'controllers\Demo@index');
Macaw::get('indexView/(:num)', 'controllers\Demo@view');
为了能够定位到app/controllers/Demo.php中的类,我们需要创建类的自动加载,创建类的自动加载有两种方式,推荐使用第二种。 方式一 修改composer.json
{
"require": {
"monolog/monolog": "^2.3",
"noahbuscher/macaw": "dev-master"
},
"autoload": {
"classmap":[
"app/controllers"
]
}
}
执行命令
$ composer dump-autoload
执行成功后会在vendor/composer/目录下创建autoload_classmap.php
return array(
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
'controllers\\Demo' => $baseDir . '/app/controllers/Demo.php',
);
方式二 因为方法一在每添加一个控制器文件时就需要执行composer dump-autoload,这样就会很麻烦,采用方式二则只需要执行一次composer命令即可。 修改composer.json
{
"require": {
"monolog/monolog": "^2.3",
"noahbuscher/macaw": "dev-master"
},
"autoload": {
"psr-4": {
"controllers\\":"app/controllers/"
}
}
}
执行命令
$ composer dump-autoload
成功后会在vendor/composer/目录下创建autoload_psr4.php文件,在文件中添加controllers的映射
return array(
'controllers\\' => array($baseDir . '/app/controllers'),
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
'NoahBuscher\\Macaw\\' => array($vendorDir . '/noahbuscher/macaw'),
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
);
测试
在app/ccontrollers目录下新建测试控制器Test.php
<?php
namespace controllers;
class Test {
public function index(){
echo 'test class!';
}
}
添加路由后浏览器访问正常展示
Macaw::get('testIndex', 'controllers\Test@index');
|