承接 jameslevi/dispatcher 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

jameslevi/dispatcher

Composer 安装命令:

composer require jameslevi/dispatcher

包简介

Is a simple routing engine for PHP applications.

README 文档

README

Is a simple routing engine for PHP applications.

Features

  1. Supports GET, POST, PUT, PATCH, DELETE and HEAD method.
  2. Enables you to inject event-based callbacks.
  3. Before and after middleware support.
  4. Lightweight and easy to use.

Installation

  1. You can install via composer.
composer require jameslevi/dispatcher
  1. Add the composer autoload mechanism if not using any framework.
require_once __DIR__.'/vendor/autoload.php';

Basic Implementation

<?php

// Make a new router instance.
$router = new Graphite\Component\Dispatcher\Dispatcher();

// Execute callback each time error occurs.
$router->onError(function($request) {

});

// Register middleware #1.
$router->middleware(function($request) {

});

// Register middleware #2.
$router->middleware(function($request) {

});

// Register route #1.
$router->get("/", function($request) {

    return "Home";
});

// Register route #2.
$router->post("/register", function($request) {

    return "Register";
});

// Register after middleware #1.
$router->afterMiddleware(function($request) {

});

// Execute callback each time request ends.
$router->onDestroy(function($request) {

});

// Run your application.
$router->run();

Request Methods

GET - Retrieve resource representation/information.

$router->get("/members", function($request) {});

POST - Create new resource.

$router->post("/members", function($request) {});

PUT - Update existing resource.

$router->put("/members/{id}", function($request) {});

PATCH - Make a partial update on a resource.

$router->patch("/members/{id}", function($request) {});

DELETE - Delete a resource.

$router->delete("/members/{id}", function($request) {});

HEAD - Request method identical to GET method but has no body.

Multiple Method Support

Any - Route that can use any request method.

$router->any("/dashboard", function($request) {});

Match - Multiple request method support.

$router->match(array("put", "patch"), "/member/{id}", function($request) {});

Event Callbacks

Create - Triggered at the beginning of the request.

$router->onCreate(function($request) {});

Before Middleware - Triggered before the middleware handler iteration.

$router->onBeforeMiddleware(function($request) {});

Middleware - Triggered each time a middleware is called.

$router->onMiddleware(function($request) {});

Middleware Abort - Triggered each time abort is called inside a middleware.

$router->onMiddlewareAbort(function($request) {});

Before Action - Triggered before doing the route action.

$router->onBeforeAction(function($request) {});

After Action - Triggered after doing the route action.

$router->onAfterAction(function($request) {});

Body Sent - Triggered when the response body was sent.

$router->onBodySent(function($request) {});

Destroy - Triggered at the very end of the request.

$router->onDestroy(function($request) {});

Error - Triggered each time error occurs.

$router->onError(function($request) {});

Route Matched - Triggered if request route matches.

$router->onRouteMatched(function($request) {});

Error Handling

You can set default error callback for all errors.

$router->setDefaultErrorCallback(function($request) {

    return $request->responseMessage();
});

You can also set callback for each error code.

$router->setErrorCallback(404, function() {
  
    return "Page Not Found";
});

Before Middlewares

You can implement multiple middlewares before doing the request action.

// Register your middleware #1.
$router->middleware(function($request) {

});

// Register your middleware #2.
$router->middleware(function($request) {

});

You can also implement middleware callbacks using classes.

<?php

namespace App\Middleware;

class TestMiddleware {

    public function handle($request) {
    
    }
    
}

You can now use this class as your middleware.

$router->middleware('App\Middleware\TestMiddleware@handle');

After Middlewares

You can also implement multiple middlewares after doing the route action.

$router->afterMiddleware('App\Middleware\TestMiddleware@handle');

Actions

This are things you wish to accomplish in each request.

$router->get("/", function($request) {

    return "Hello World";
});

Controllers

Instead of defining all actions in a closure, you may wish to organize everything inside a controller class.

<?php

namespace App\Controller;

class MyController {

    public function home($request) {
    
        return "Home";
    }
    
    public function aboutUs($request) {
    
        return "About Us";
    }
    
}
$router->get("/home", "App\Controller\MyController@home");
$router->get("/about-us", "App\Controller\MyController@aboutUs");

GET Parameters

You can access all the GET parameters using the get method from the request object.

$router->get("/members", function($request) {

    return $request->get("per_page");
});

POST, PUT, PATCH, DELETE Parameters

You can use the "post" method from the request object to retrieve POST parameters.

$router->post("/members/{id}", function($request) {

    return $request->post("token");
});

URI Embeded Parameters

You can also use segment of the request URI as a parameter.

$router->get("/members/{member_id}", function($request) {

    return $request->member_id;
});

Forced Abort

You can immediately terminate the request using "abort" method.

$router->abort(503); // Return "Service Unavailable" response.

Headers

You can assign headers using the "setHeader" method.

$router->setHeader("Content-Type", "application/json");

Service Availability

You can down the service availability using the "down" method.

$router->down();

You can also down individual routes.

$router->get('/dashboard', 'App\Controller\MyController@dashboard')->down();

Request Helpers

Method - Return the request method used during the request.

$request->method();

URI - Return the current request uri excluding the query string.

$request->uri();

Port - Return the server port number.

$request->port();

Protocol - Return the server protocol.

$request->protocol();

Secure - Determine if request is through secure connection.

$request->secure();

Localhost - Determine if request is in localhost.

$request->localhost();

XMLHttpRequest - Determine if request is using XMLHttpRequest.

$request->xmlHttpRequest();

Contribution

For issues, concerns and suggestions, you can email James Crisostomo via nerdlabenterprise@gmail.com.

License

This package is an open-sourced software licensed under MIT License.

jameslevi/dispatcher 适用场景与选型建议

jameslevi/dispatcher 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 7 次下载、GitHub Stars 达 1, 最近一次更新时间为 2021 年 05 月 06 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 jameslevi/dispatcher 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 jameslevi/dispatcher 我们能提供哪些服务?
定制开发 / 二次开发

基于 jameslevi/dispatcher 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 7
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-05-06