用composer搭建php框架(二)--搭建路由

本教程示例代码见 github:https://github.com/xdlmr/myframe

上篇我们已经安装好了composer,下面我们来构建路由。

安装klein

本文我们采用https://github.com/klein/klein.php,对应的composer包为klein/klein

两种方法安装:

  1. 更改composer.json为:
{
  "require": {
    "klein/klein": "^2.1"
  }
}

运行 composer update,成功之后将得到以下目录:

2 命令行进入phpframe目录,执行composer require klein/klein,稍等一会就能安装成功。

至此,klein 包安装成功!

PS:如果安装速度慢或者卡顿,请使用composer国内镜像。命令行执行:

composer config -g repo.packagist composer https://packagist.phpcomposer.com  

上述命令将会在当前项目中的 composer.json 文件的末尾自动添加镜像的配置信息(你也可以自己手工添加):

"repositories": {
    "packagist": {
        "type": "composer",
        "url": "https://packagist.phpcomposer.com"
    }
}

路由测试

下面我们就来见证klein的奇迹吧,让klein跑起来

在文件夹phpframe下新建 index.php 文件:

<?php
define("WEB_ROOT", realpath('./'));//项目根路径
date_default_timezone_set('Etc/GMT-8');

require_once WEB_ROOT . '/vendor/autoload.php';//自动加载

//下面是路由代码
$router = new \Klein\Klein();

$router -> respond('GET', '/', function() {
   echo "hello world";
});
$router -> dispatch();

这里我设置的项目入口文件和路由文件都是index.php,当然你也可以把路由代码单独放在一个route.php文件里,引入便是。

我在本地xampp使用8989 端口,访问 http://127.0.0.1:8989/可以看到:

第一个路由

如果你成功看到以上页面,那么恭喜你,路由配置成功!

完善路由

整个框架会定义一个比较通用的路由,下面我们加入前端发htpp请求的的路由、页面访问路由,以及完善访问index页面的路由

完善后index.php文件的路由如下:

$router = new \Klein\Klein();

//前端http请求路由
$router -> respond([ 'GET', 'POST' ], '/[:controller]/[:func]', function($request, $response, $service) {
    $obj = Box ::getObject($request -> controller);
    if($obj == null) {
        header('HTTP/1.1 404 Not Found');
        return;
    }
    $func = $request -> func;
    $response -> header('Content-Type', 'text/json');
    return json_encode($obj -> $func($request));
});
//页面访问路由
$router -> respond([ 'GET', 'POST' ], '/[:controller]', function($request, $response, $service) {
    $obj = Box ::getObject($request -> controller);
    if($obj == null) {
        header('HTTP/1.1 404 Not Found');
        return;
    }
    $func = "render";
    return $obj -> $func($request);
});

$router -> respond('GET', '/', function() {
    $controller = "index";
    $func = "render";
    $obj = Box ::getObject($controller);
    if($obj == null) {
        header('HTTP/1.1 404 Not Found');
        return;
    }
    return $obj -> $func();
});
$router -> dispatch()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fontstyle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值