动手开发一个简易的 PHP for Git Server 第二章

11 篇文章 1 订阅
6 篇文章 0 订阅

router.php

class Router
{
    public $patterns = [];

    public function get($pattern, $callback)
    {
        $this->patterns[] = ['GET', $pattern, $callback];
    }

    public function post($pattern, $callback)
    {
        $this->patterns[] = ['POST', $pattern, $callback];
    }

    public function head($pattern, $callback)
    {
        $this->patterns[] = ['HEAD', $pattern, $callback];
    }

    public function any($methods = ['get', 'head', 'post'], $pattern, $callback)
    {
        foreach ($methods as $method) {
            call_user_func([$this, $method], $pattern, $callback);
        }
    }

    public function run()
    {
        $method = $_SERVER['REQUEST_METHOD'];
        $uri = $_SERVER['PHP_SELF'];

        foreach ($this->patterns as $pattern) {
            if($method == $pattern[0] && preg_match("~{$pattern[1]}~ims", $uri, $match)) {
                $log = sprintf('%s [%s] %s', date('Y-m-d H:i:s'), $method, $_SERVER['REQUEST_URI']) . PHP_EOL;
                file_put_contents('log.data', $log, FILE_APPEND);
                call_user_func($pattern[2]);
                return false;
            }
        }
    }
}

这里 router 做的并不仔细,仅仅是用于展现流程,不建议使用于生产环境,这里仅做学习研究使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值