2017 © Pedro Peláez
 

library route

Simple PHP router class.

image

alsemany/route

Simple PHP router class.

  • Wednesday, December 6, 2017
  • by alsemany
  • Repository
  • 1 Watchers
  • 1 Stars
  • 19 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 169 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

forked from noahbuscher/Macaw, (*1)

Route

Route is a simple, open source PHP router. It's super small (~150 LOC), fast, and has some great annotated source code. This class allows you to just throw it into your project and start using it immediately., (*2)

Install

Composer

If you have Composer, (*3)

# composer require alsemany/route

Download From Releases

https://github.com/alsemany/route/releases Download Zip file or tar.gz, (*4)

Examples

First, use the Route namespace:, (*5)

use \Alsemany\Route\Route;

Route is not an object, so you can just make direct operations to the class. Here's the Hello World:, (*6)

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

Route::dispatch();

Route also supports lambda URIs, such as:, (*7)

Route::get('/(:any)', function($slug) {
  echo 'The slug is: ' . $slug;
});

Route::dispatch();

You can also make requests for HTTP methods in Route, so you could also do:, (*8)

Route::get('/', function() {
  echo 'I'm a GET request!';
});

Route::post('/', function() {
  echo 'I'm a POST request!';
});

Route::any('/', function() {
  echo 'I can be both a GET and a POST request!';
});

Route::dispatch();

Lastly, if there is no route defined for a certain location, you can make Route run a custom callback, like:, (*9)

Route::catchall(function() {
  echo 'Catching All 404 Errors :: Not Found';
});

If you don't specify an error callback, Route will just echo 404., (*10)


In order to let the server know the URI does not point to a real file, you may need to use one of the example configuration files., (*11)

Example passing to a controller instead of a closure


It's possible to pass the namespace path to a controller instead of the closure:, (*12)

For this demo lets say I have a folder called controllers with a demo.php, (*13)

index.php:, (*14)

require('vendor/autoload.php');

use Alsemany\Route\Route;

Route::get('/', 'Controllers\demo@index');
Route::get('page', 'Controllers\demo@page');
Route::get('view/(:num)', 'Controllers\demo@view');

Route::dispatch();

demo.php:, (*15)

<?php
namespace controllers;

class Demo {

    public function index()
    {
        echo 'home';
    }

    public function page()
    {
        echo 'page';
    }

    public function view($id)
    {
        echo $id;
    }

}

This is with Route installed via composer., (*16)

composer.json:, (*17)

{
   "require": {
        "alsemany/Route": "^0.1.0"
    },
    "autoload": {
        "psr-4": {
            "" : ""
        }
    }
}
````

.htaccess(Apache):

RewriteEngine On RewriteBase /, (*18)

Allow any files or directories that exist to be displayed directly

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d, (*19)

RewriteRule ^(.*)$ index.php?$1 [QSA,L], (*20)


.htaccess(Nginx):

rewrite ^/(.*)/$ /$1 redirect;, (*21)

if (!-e $request_filename){ rewrite ^(.*)$ /index.php break; }, (*22)

```, (*23)

The Versions

06/12 2017

dev-master

9999999-dev https://github.com/alsemany/route

Simple PHP router class.

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

php easy simple router php-router catch-all

06/12 2017

0.1

0.1.0.0 https://github.com/alsemany/route

Simple PHP router class.

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

php easy simple router php-router catch-all