guglielmopepe/dispatcher

Dispatcher provides a flexible dispatch component.

1.0.0 2023-03-30 18:38 UTC

This package is auto-updated.

Last update: 2024-05-30 00:59:05 UTC


README

Dispatcher provides a flexible dispatch component.

Table of Contents

Benefits

  • Dispatcher use design pattern
  • Dispatcher is flexible
  • Dispatcher is simple

Features

Dispatcher allows you to create rule-based or convention-based handlers.

Dispatcher allows you to create routes that map HTTP verbs.

Dispatcher use the Chain of Responsability pattern to pass parameters down the chain until it finds the right handler.

In case there is no handler that can handle the request an exception will be thrown.

Prerequisites

Requires PHP 7.2.0 or newer.

Installation

Use Composer

$ composer require guglielmopepe/dispatcher

Usage

$dispatcher = new \Dispatcher\Classes\Handlers\Convention();
$dispatcher->connect(new \Dispatcher\Classes\Handlers\NotFound());


$params = [];

if (isset($_GET['route']))
{
    $params['route'] = $_GET['route'];
}

$route = $dispatcher->handle($params); 

$method = strtolower($_SERVER['REQUEST_METHOD']);

$route->$method();

exit(0);

Documentation

Dispatcher include two default handler: Convention handler and NotFound handler.

The Convention handler match the value corrisponding route key in handler's parameters or Home route.

The NotFound handler match the parameters with NotFound route.

Support

If you need information, please create a GitHub issue.

If you discover a security vulnerability, please send an email to Guglielmo Pepe at info@guglielmopepe.com. All security vulnerabilities will be promptly addressed.

Faq

To do.

Contributing

If you want to say thank you and/or support the active development of dispatcher:

  1. Add a GitHub Star to the project.
  2. Share the project on social media.
  3. Write a review or tutorial on Medium, Dev.to or personal blog.

Contacts

If you need information, please create a GitHub issue or send an email to info@guglielmopepe.com.

Roadmap

See the list of open issues:

Change log

Please see Changelog file for more information on what has changed recently.

License

Distributed under the MIT License. Please see License File for more information.