간단하고 빠르며 매우 기능적입니다. minasrouter MVC 프로젝트를 위한 PHP 경로 구성 요소입니다! RESTfull 동사
(GET, POST, PUT, PATCH, DELETE)
를 추상화하고 애플리케이션 컨트롤러에서 간단하고 쉬운 방법으로 렌더링하도록 만들어졌습니다.
minasrouter
모든 정보를 독립적으로 작동하고 처리하여 개발자의 프로세스를 더 쉽게 만들고 프로젝트의 개발/진행을 가속화합니다.
간단하고 빠르며 매우 기능적입니다. minasrouter MVC 프로젝트를 위한 PHP 경로 구성 요소입니다! RESTfull(GET, POST, PUT, PATCH, DELETE) 동사를 추상화하고 애플리케이션 컨트롤러에서 간단하고 쉽게 렌더링하도록 설계되었습니다.
minasrouter 모든 정보를 독립적으로 작동하고 처리하여 개발자의 프로세스를 촉진하고 프로젝트의 개발/진행을 가속화합니다.
(Yes, it really is a few minutes)
두 줄을 사용하면 경로를 사용하기 시작합니다!
시청을 통해 배우는 사람일 수도 있습니다. minasrouter 사용하는 방법에 대한 폴더 아키텍처 예제가 포함된 예제 폴더에 액세스할 수 있습니다.
여기서 수행된 모든 테스트를 확인할 수 있습니다. 즐기다!
minasrouter Composer require
통해 사용할 수 있습니다.
" require " {
"nicollassilva/ minasrouter " : " ^1.0 "
}
또는 터미널 에서 실행하십시오.
composer require nicollassilva/ minasrouter
minasrouter 사용을 시작하려면 모든 탐색 관리를 시스템의 기본 경로 파일로 리디렉션해야 합니다. 이 파일은 전체 경로 처리 프로세스를 수행하고 기본적으로 구성된 내용을 반환합니다. 아래 예와 서버에 따라 구성하십시오.
minasrouter 사용을 시작하려면 모든 탐색 관리를 시스템의 기본 경로 파일로 리디렉션해야 합니다. 이 파일은 전체 경로 처리 프로세스를 수행하고 기본적으로 구성된 내용을 반환합니다. 아래 예와 서버에 따라 구성하십시오.
RewriteEngine on
Options All -Indexes
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} (www.)?localhost
RewriteRule (.*) https:// %{HTTP_HOST} [L,R=301]
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]
RewriteEngine On
# Options All -Indexes
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# URL Rewrite
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?route=/$1 [L,QSA]
# ## Do not use the settings below if you are using developing in a local environment, use only in production.
# # WWW Redirect
# RewriteCond %{HTTP_HOST} !^www. [NC]
# RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# # HTTPS Redirect
# RewriteCond %{HTTP:X-Forwarded-Proto} !https
# RewriteCond %{HTTPS} off
# RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
location / {
if ( $script_filename !~ "-f" ){
rewrite ^(.*)$ /index.php?route=/ $1 break;
}
}
구성 요소를 시작하려면 다음을 수행하십시오.
<?php
require __DIR__ . " /../vendor/autoload.php " ;
use minasrouter Router Route ;
// The second argument is optional. It separates the Controller and Method from the string
// Example: "Controller@method"
Route:: start ( " http://yourdomain.com " , " @ " );
Route:: get ( " / " , function () {
// ...
});
// ... all routes here
// You will put all your routes before this function
Route:: execute ();
행동 양식:
기능 | 매개변수 | 매개변수 | 매개변수 |
---|---|---|---|
얻다 | 문자열 $uri | $콜백 | |
우편 | 문자열 $uri | $콜백 | |
놓다 | 문자열 $uri | $콜백 | |
반점 | 문자열 $uri | $콜백 | |
삭제 | 문자열 $uri | $콜백 | |
성냥 | $httpVerbs 배열 | 문자열 $uri | $콜백 |
어느 | 문자열 $uri | $콜백 |
예:
Route:: get ( ' /users ' , [ App Controllers User::class, ' index ' ]);
Route:: post ( ' /users ' , [ App Controllers User::class, ' store ' ]);
Route:: put ( ' /users/{id} ' , [ App Controllers User::class, ' update ' ]);
Route:: patch ( ' /users/{id} ' , [ App Controllers User::class, ' update ' ]);
Route:: delete ( ' /users/{id} ' , [ App Controllers User::class, ' delete ' ]);
// The router allows you to register routes that respond to any HTTP verb:
Route:: any ( ' / ' , function () {
// ...
});
// Sometimes you may need to register a route that responds to multiple HTTP verbs:
Route:: match ([ " GET " , " POST " ], " / " , function () {
// ...
});
행동 양식:
기능 | 매개변수 |
---|---|
이름 | 문자열 $name |
에 | 문자열 $name |
예:
Route:: get ( " /users/create " , function () {
// ...
})-> name ( " user.create " );
Route:: get ( " /users/2 " , function () {
// ...
})-> as ( " user.show " );
Route:: get ( " / " , function () {
// ...
})-> name ( " web.index " );
Route:: get ( " /user/{id} " , function ( $ id ) {
echo $ id ;
})-> name ( " user.show " );
Route:: get ( " /post/{id?} " , function ( $ id ) {
if (! $ id ) {
// ...
}
// ...
})-> name ( " post.show " );
행동 양식:
기능 | 매개변수 | 매개변수 |
---|---|---|
어디 | $params 배열 | |
whereParam | 문자열 $param | 문자열 $정규식 |
어디에번호 | 문자열 $param | |
whereAlpha | 문자열 $param | |
where영숫자 | 문자열 $param | |
whereUuid | 문자열 $param |
예:
Route:: get ( " /user/{id} " , [ App Controllers UserController::class, " show " ])
-> name ( " user.show " )
-> where ([ " id " => " [0-9]+ " ]);
// whereParam is alias of where method
Route:: get ( " /profile/{slug} " , [ App Controllers UserController::class, " profile " ])
-> name ( " user.profile " )
-> whereParam ( " id " , " [0-9]+ " );
Route:: get ( " /book/{id} " , [ App Controllers BookController::class, " show " ])
-> name ( " book.show " )
-> whereNumber ( " id " );
여기에서 미들웨어를 사용하는 것은 매우 쉽습니다. 클래스의 전체 이름을 전달하거나 전역으로 설정하고 거기서 별칭을 사용하기만 하면 됩니다.
참고: 아래에 모든 경로를 배치하는 것이 중요합니다. 이 클래스 이상의 경로에는 이러한 미들웨어가 전역적으로 포함되지 않습니다.
Route:: globalMiddlewares ([
' isLogged ' => App Middlewares isLogged::class,
' isAdmin ' => App Middlewares isAdmin::class
]);
// ... all routes
미들웨어 메소드를 사용하여 미들웨어를 라우트에 할당할 수 있습니다.
Route:: get ( " /musics " , function () {
// ...
})-> middleware ( " isLogged " );
Route:: get ( " /musics " , function () {
// ...
})-> middleware ([ " isLogged " ]);
미들웨어 이름 배열을 미들웨어 메서드에 전달하여 경로에 여러 미들웨어를 할당할 수 있습니다.
Route:: get ( " /musics " , function () {
// ...
})-> middleware ( " first, second " );
Route:: get ( " /movies " , function () {
// ...
})-> middleware ([ " first " , " second " ]);
미들웨어를 할당할 때 정규화된 클래스 이름을 전달할 수도 있습니다.
use App Middlewares VerifyCsrfToken ;
Route:: get ( " /series " , function () {
// ...
})-> middleware (VerifyCsrfToken::class);
Route:: get ( " /series " , function () {
// ...
})-> middleware ( App Middlewares VerifyCsrfToken::class);
때로는 미들웨어가 포함된 경로 그룹을 생성하지만 특정 미들웨어 없이 하나 또는 몇 개의 경로만 포함하기를 원할 경우 그렇게 할 수 있습니다.
Route:: middleware ([ ' auth ' , ' api ' ])-> group ( function () {
Route:: get ( ' / ' , function () {
// All middlewares will works in this route
});
Route:: get ( ' /no-api ' , function () {
// Only the auth middleware works here
})-> withoutMiddleware ( ' api ' );
});
모든 방법:
기능 | 매개변수 | ::기능 | ->기능 |
---|---|---|---|
네임스페이스 | 문자열 $네임스페이스 | 예 | 예 |
접두사 | 문자열 $접두사 | 예 | 예 |
이름 | 문자열 $name | 예 | 예 |
미들웨어 | 문자열 $미들웨어 | 예 | 예 |
그룹 메소드는 정적 방식 또는 일반 방식으로 호출할 수 있습니다. 클로저 내부에 경로로 삽입할 함수 그룹을 호출하는 것을 잊지 마세요 .
예:
Route:: name ( " admin. " )-> group ( function () {
Route:: get ( " / " , function () {
// admin.index
})-> name ( " index " );
});
Route:: prefix ( " admin/ " )-> group ( function () {
Route:: get ( " /index " , function () {
// http://localhost/admin/index
})-> name ( " index " );
});
Route:: namespace ( " AppControllers " )-> group ( function () {
Route:: get ( " /user/{id} " , [ " User " , " show " ])-> name ( " show " );
// AppControllersUser
});
Route:: middleware ( App Middlewares isLogged::class)-> group ( function () {
Route:: get ( " /user/{id} " , [ " User " , " show " ])-> name ( " show " );
});
Route:: namespace ( " AppControllersAdmin " )
-> middleware ([ " isLogged " , " isAdmin " ])
-> name ( " admin. " )
-> prefix ( " admin " )
-> group ( function () {
// ...
});
경로 그룹 내의 개별 미들웨어와 함께 경로를 사용할 수 있습니다.
Route:: namespace ( " isLogged " )-> group ( function () {
Route:: get ( " /posts " , function () {
// ...
})-> middleware ( " isAdmin " );
// ...
});
그룹 이름을 무시하는 경로를 원할 수도 있습니다. 이를 위해 name 메소드의 두 번째 매개변수를 사용할 수 있습니다.
Route:: name ( " admin. " )-> group ( function () {
Route:: get ( " /posts " , function () {
// name: app.posts
})-> name ( " app.posts " , true );
});
행동 양식:
기능 | 매개변수 | 매개변수 | 매개변수 |
---|---|---|---|
리디렉션 | 문자열 $uri | 문자열 $redirect | 정수 $statusCode = 302 |
영구 리디렉션 | 문자열 $uri | 문자열 $redirect |
예:
// Returns 302 status code by default.
Route:: redirect ( " /here " , " /there " );
Route:: redirect ( " /here " , " /there " , 301 );
// permanentRedirect always returns 301
Route:: permanentRedirect ( " /here " , " /there " );
// You can return an existing route
Route:: redirect ( " /index " , " web.index " );
해당 URL 주소에 등록된 경로가 없는 경우 대체 경로가 책임을 집니다. 사용자가 요청한 경로가 없을 때마다 대체 경로가 호출됩니다.
Route:: fallback ( function () {
echo ' Route error! ' ;
// ...
});
참고: 기존 경로로 리디렉션하려는 경우 주의하십시오. 동적 인수가 포함된 경우 전체 정규식을 반환하고 오류가 발생합니다.
동적 인수가 있는 경우 전체 정규식과 반환된 오류가 반환되므로 기존 경로로 리디렉션할 때 주의하세요.
경로가 호출되고 클로저 또는 컨트롤러 메서드가 호출될 때마다 minasrouter HttpRequest 인스턴스를 매개 변수로 갖게 됩니다. 경로에 동적 매개변수(필수 또는 선택)가 있는 경우 요청 인스턴스를 수신하기 전에 해당 매개변수를 전달해야 합니다.
기능 | 매개변수 | 매개변수 |
---|---|---|
getParams | ||
길 | ||
URL | ||
전체 URL | ||
헤더 | 문자열 $헤더 | 문자열 $default |
hasHeader | 문자열 $헤더 | |
아이피 | ||
질문 | ?문자열 $쿼리 | ?문자열 $default |
모두 | ?문자열 $제외 | |
get메소드 | ||
is메소드 | 문자열 $expectedMethod |
경로의 동적 매개변수는 Request 인스턴스와 함께 메소드에 직접 전달됩니다.
예:
use minasrouter Http Request ;
Route:: get ( " / " , function ( Request $ request )) {
// ...
});
Route:: get ( " /user/{id} " , function ( $ id , Request $ request )) {
// ...
});
Route:: get ( " /posts/{slug?} " , function ( $ slug , Request $ request )) {
// ...
});
Route:: get ( " /book/{slug} " , function ( $ slug , Request $ request ) {
// Retrieving all dynamic parameters
print_r ( $ request -> getParams ());
});
요청 메소드는 모든 양식 데이터, 쿼리 매개변수, 동적 경로 매개변수 및 전체 요청 헤더를 포함하는 메소드입니다.
path 메소드는 요청의 경로 정보를 반환합니다. 따라서 들어오는 요청이 http://localhost/foo/bar 를 대상으로 하는 경우 경로 메서드는 foo/bar 를 반환합니다.
$ uri = $ request -> path ();
들어오는 요청에 대한 전체 URL을 검색하려면 url 또는 fullUrl 메소드를 사용할 수 있습니다. url 메소드는 쿼리 문자열 없이 URL을 반환하는 반면, fullUrl 메소드는 쿼리 문자열을 포함합니다.
$ url = $ request -> url ();
$ urlWithQueryString = $ request -> fullUrl ();
header 메소드를 사용하여 minasrouter HttpRequest 인스턴스에서 요청 헤더를 검색할 수 있습니다. 요청에 헤더가 없으면 null이 반환됩니다. 그러나 헤더 메소드는 요청에 헤더가 없는 경우 반환될 선택적 두 번째 인수를 허용합니다.
$ value = $ request -> header ( " Header-Name " );
$ value = $ request -> header ( " Header-Name " , " default " );
hasHeader 메소드는 요청에 특정 헤더가 포함되어 있는지 확인하는 데 사용될 수 있습니다.
if ( $ request -> hasHeader ( " Header-Name " )) {
// ...
}
BearerToken 메소드는 Authorization 헤더에서 Bearer 토큰을 검색하는 데 사용될 수 있습니다. 해당 헤더가 없으면 null이 반환됩니다.
$ token = $ request -> bearerToken ();
ip 메소드는 웹사이트에 요청한 클라이언트의 IP 주소를 검색하는 데 사용될 수 있습니다.
$ ipAddress = $ request -> ip ();
쿼리 메소드는 쿼리 문자열에서만 값을 검색합니다.
$ id = $ request -> query ( " id " );
요청된 쿼리 문자열 값 데이터가 없으면 이 메서드에 대한 두 번째 인수가 반환됩니다.
$ developer = $ request -> query ( " developer " , " Nicollas " );
모든 쿼리 문자열 값을 검색하려면 인수 없이 쿼리 메서드를 호출할 수 있습니다.
$ query = $ request -> query ();
Request 클래스의 속성을 통해 queryString 및 입력 데이터에 직접 액세스할 수 있습니다.
// http://localhost/?foo=bar
$ foo = $ request -> foo ;
// <input type="text" name="title" value=" minasrouter ">
$ title = $ request -> title ;
all 메소드를 사용하여 들어오는 요청의 모든 입력 데이터를 배열로 검색할 수 있습니다. 이 방법은 들어오는 요청이 HTML 양식에서 온 것인지 XHR 요청인지에 관계없이 사용될 수 있습니다. 일부 데이터를 무효화하려면 해당 데이터를 두 번째 매개변수로 전달할 수 있습니다.
$ data = $ request -> all ();
// all, except csrf_token, page
$ data = $ request -> all ( " csrf_token, page " );
getMethod 메소드는 요청에 대한 HTTP 동사를 반환합니다. isMethod 메소드를 사용하여 HTTP 동사가 주어진 문자열과 일치하는지 확인할 수 있습니다:
$ httpMethod = $ request -> getMethod ();
if ( $ request -> isMethod ( ' POST ' )) {
// ...
}