macaw
1.0.0
Macaw는 간단한 오픈 소스 PHP 라우터입니다. 매우 작고(~150 LOC) 빠르며 주석이 달린 훌륭한 소스 코드가 있습니다. 이 클래스를 사용하면 프로젝트에 적용하고 즉시 사용할 수 있습니다.
Composer가 있는 경우 Macaw를 composer.json
에 프로젝트 종속성으로 포함하면 됩니다. .ZIP 파일을 다운로드하고 프로젝트 디렉터리에 추출하여 설치하지 않는 경우.
require: {
"noahbuscher/macaw": "dev-master"
}
먼저 Macaw 네임스페이스를 use
.
use NoahBuscher Macaw Macaw ;
잉꼬는 개체가 아니므로 수업에 직접 조작을 해주면 됩니다. Hello World는 다음과 같습니다.
Macaw:: get ( ' / ' , function () {
echo ' Hello world! ' ;
});
Macaw:: dispatch ();
Macaw는 다음과 같은 람다 URI도 지원합니다.
Macaw:: get ( ' /(:any) ' , function ( $ slug ) {
echo ' The slug is: ' . $ slug ;
});
Macaw:: dispatch ();
Macaw에서 HTTP 메서드를 요청할 수도 있으므로 다음과 같은 작업도 수행할 수 있습니다.
Macaw::get( ' / ' , function () {
echo ' I ' m a GET request! ' ;
});
Macaw::post( ' / ' , function() {
echo ' I'm a POST request! ' ;
});
Macaw::any( ' / ' , function() {
echo ' I can be both a GET and a POST request!';
});
Macaw::dispatch();
마지막으로, 특정 위치에 대해 정의된 경로가 없는 경우 Macaw가 다음과 같이 사용자 정의 콜백을 실행하도록 할 수 있습니다.
Macaw:: error ( function () {
echo ' 404 :: Not Found ' ;
});
오류 콜백을 지정하지 않으면 Macaw는 404
에코합니다.
URI가 실제 파일을 가리키지 않는다는 것을 서버에 알리려면 예제 구성 파일 중 하나를 사용해야 할 수도 있습니다.
이 데모에서는 데모.php가 포함된 컨트롤러라는 폴더가 있다고 가정하겠습니다.
index.php:
require ( ' vendor/autoload.php ' );
use NoahBuscher Macaw Macaw ;
Macaw:: get ( ' / ' , ' Controllersdemo@index ' );
Macaw:: get ( ' page ' , ' Controllersdemo@page ' );
Macaw:: get ( ' view/(:num) ' , ' Controllersdemo@view ' );
Macaw:: dispatch ();
데모.php:
<?php
namespace Controllers ;
class Demo {
public function index ()
{
echo ' home ' ;
}
public function page ()
{
echo ' page ' ;
}
public function view ( $ id )
{
echo $ id ;
}
}
이것은 작곡가를 통해 Macaw가 설치된 경우입니다.
작곡가.json:
{
"require": {
"noahbuscher/macaw": "dev-master"
},
"autoload": {
"psr-4": {
"" : ""
}
}
}
.htaccess(아파치):
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;
}