tkaratug/titan-router

一个简单且轻量级的PHP路由器

v1.0.0 2017-10-25 11:17 UTC

This package is auto-updated.

Last update: 2024-08-29 04:37:15 UTC


README

A simple and lightweight PHP router. Built by Turan Karatuğ (http://www.turankaratug.com)

特性

  • 支持 GETPOSTPUTDELETEOPTIONSPATCHHEAD 请求方法
  • 静态路由模式
  • 动态路由模式
  • 易于使用的模式
  • 允许 Class@Method 调用
  • 路由前的中间件
  • 命名空间支持
  • 路由分组支持
  • 子域名支持
  • 子目录支持
  • 自定义404处理

安装

可以使用Composer进行安装

composer require tkaratug/titan-router

使用方法

require __DIR__ . '/vendor/autoload.php';

use Titan\Router\Router as Route;

Route::get('/', function(){
    echo 'Hello world!';
});

Route::execute();

提供单请求方法的简写

Route::get('pattern', function() { /* ... */ });
Route::post('pattern', function() { /* ... */ });
Route::put('pattern', function() { /* ... */ });
Route::delete('pattern', function() { /* ... */ });
Route::options('pattern', function() { /* ... */ });
Route::patch('pattern', function() { /* ... */ });

注意:必须在调用 Route::execute() 之前连接路由。

Class@Method 调用

我们可以这样路由到类操作

Route::get('/profile', 'User@viewProfile'); // Without namespace
Route::get('/product/{num}', 'App\Controllers\Product@detail'); // With namespace

路由前的中间件

Route::middleware(['auth'])->group(function(){
    Route::get('/dashboard', function(){ /* ... */} );
});

命名空间支持

Route::namespace('backend')->group(function(){
    // Controllers Within The "Controllers\Backend" Namespace
});

子目录支持

Route::prefix('admin')->group(function(){
    Route::get('users', function(){
        // Matches The "/admin/users" URL
    });
});

子域名支持

Route::domain('api.example.com')->group(function(){
    Route::get('user/{num}', function($id){
        //
    });
});

多个分组

Route::namespace('backend')->prefix('admin')->middleware(['auth'])->group(function(){
    Route::get('/', 'Dashboard@index');
    // Controller = Controllers\Backend\Dashboard
    // URL = /admin
    // Middleware = Auth
});

自定义404

使用 Route::set404(function); 覆盖默认的404处理器

Route::set404(function() {
    header('HTTP/1.1 404 Not Found');
    // ... do something special here
});