dispatch

a tiny library for quick and easy PHP 5.6+ apps

Github stars Tracking Chart

dispatch

  • a tiny library for quick and easy PHP apps
  • requires PHP 5.6+

Here's a sample of how you'd usually use dispatch.

<?php

require 'path/to/dispatch.php';

# sample JSON end point
route('GET', '/books.json', function ($db, $config) {
  $list = loadAllBooks($db);
  $json = json_encode($list);
  return response($json, 200, ['content-type' => 'application/json']);
});

# html end point
route('GET', '/books/:id', function ($args, $db) {
  $book = loadBookById($db, $args['id']);
  $html = phtml(__DIR__.'/views/book', ['book' => $book]);
  return response($html);
});

# respond using a template
route('GET', '/about', page(__DIR__.'/views/about'));

# sample dependencies
$config = require __DIR__.'/config.php';
$db = createDBConnection($config['db']);

# arguments you pass here get forwarded to the route actions
dispatch($db, $config);

If you want to see where all the state goes, you can use action and serve.

<?php

require 'path/to/dispatch.php';

# create a stack of actions
$routes = [
  action('GET', '/books.json', function ($db, $config) {
    $list = loadAllBooks($db);
    $json = json_encode($list);
    return response($json, 200, ['content-type' => 'application/json']);
  }),
  action('GET', '/books/:id', function ($args, $db) {
    $book = loadBookById($db, $args['id']);
    $html = phtml(__DIR__.'/views/book', ['book' => $book]);
    return response($html);
  }),
  action('GET', '/about', page(__DIR__.'/views/about'))
];

# sample dependencies
$config = require __DIR__.'/config.php';
$db = createDBConnection($config['db']);

# we need the method and requested path
$verb = $_SERVER['REQUEST_METHOD'],
$path = $_SERVER['REQUEST_URI'],

# serve app against verb + path, pass dependencies
$responder = serve($routes, $verb, $path, $db, $config);

# invoke responder to flush response
$responder();

tests

Tests for dispatch use plain assertions.

php tests/dispatch-tests.php

If no errors were printed, then you're all good.

license

MIT

Main metrics

Overview
Name With Ownernoodlehaus/dispatch
Primary LanguagePHP
Program languagePHP (Language Count: 1)
Platform
License:
所有者活动
Created At2012-02-01 05:37:06
Pushed At2025-01-19 05:16:03
Last Commit At2025-01-19 13:16:02
Release Count101
Last Release Name11.0.1 (Posted on 2023-04-11 20:46:39)
First Release Name1.0.0 (Posted on 2013-06-04 01:21:26)
用户参与
Stargazers Count534
Watchers Count47
Fork Count103
Commits Count486
Has Issues Enabled
Issues Count46
Issue Open Count0
Pull Requests Count51
Pull Requests Open Count0
Pull Requests Close Count10
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private