macaw php,Macaw

Macaw

Macaw 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.

Install

If you have Composer, just include Macaw as a project dependency in your composer.json. If you don't just install it by downloading the .ZIP file and extracting it to your project directory.

require: {

"noahbuscher/macaw": "dev-master"

}

Examples

First, use the Macaw namespace:

use \NoahBuscher\Macaw\Macaw;

Macaw is not an object, so you can just make direct operations to the class. Here's the Hello World:

Macaw::get('/', function() {

echo 'Hello world!';

});

Macaw::dispatch();

Macaw also supports lambda URIs, such as:

Macaw::get('/(:any)', function($slug) {

echo 'The slug is: ' . $slug;

});

Macaw::dispatch();

You can also make requests for HTTP methods in Macaw, so you could also do:

Macaw::get('/', function() {

echo 'I <3 GET commands!';

});

Macaw::post('/', function() {

echo 'I <3 POST commands!';

});

Macaw::dispatch();

Lastly, if there is no route defined for a certain location, you can make Macaw run a custom callback, like:

Macaw::error(function() {

echo '404 :: Not Found';

});

If you don't specify an error callback, Macaw will just echo 404.

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.

##Example passing to a controller instead of a closure

It's possible to pass the namespace path to a controller instead of the closure:

For this demo lets say I have a folder called controllers with a demo.php

index.php:

require('vendor/autoload.php');

use \NoahBuscher\Macaw\Macaw;

Macaw::get('/', 'Controllers\demo@index');

Macaw::get('page', 'Controllers\demo@page');

Macaw::get('view/(:num)', 'Controllers\demo@view');

Macaw::dispatch();

demo.php:

namespace controllers;

class Demo {

public function index()

{

echo 'home';

}

public function page()

{

echo 'page';

}

public function view($id)

{

echo $id;

}

}

This is with Macaw installed via composer.

composer.json:

{

"require": {

"noahbuscher/macaw": "dev-master"

},

"autoload": {

"psr-4": {

"" : ""

}

}

}

.htaccess(Apache):

RewriteEngine On

RewriteBase /

# Allow any files or directories that exist to be displayed directly

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

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

.htaccess(Nginx):

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

if (!-e $request_filename){

rewrite ^(.*)$ /index.php break;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值