シンプル、高速、そして非常に機能的です。 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)
2 行でルートの使用が開始されます。
あなたは見て学ぶ人かもしれません。サンプル フォルダーにアクセスできます。このフォルダーには、 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 | 文字列 $regex |
ここで番号 | 文字列 $param | |
ここでアルファ | 文字列 $param | |
ここで英数字 | 文字列 $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);
ミドルウェアを使用してルートのグループを作成する場合がありますが、特定のミドルウェアを使用せずに 1 つまたは少数のルートだけを作成したい場合は、それが可能です。
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 ' );
});
すべての方法:
関数 | パラメータ | ::関数 | ->機能 |
---|---|---|---|
名前空間 | 文字列 $namespace | はい | はい |
接頭語 | 文字列 $prefix | はい | はい |
名前 | 文字列 $name | はい | はい |
ミドルウェア | 文字列 $middleware | はい | はい |
グループ メソッドは静的方法または通常の方法で呼び出すことができます。関数グループを呼び出して、クロージャ内にルートとして挿入することを忘れないでください。
例:
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 メソッドの 2 番目のパラメーターを使用できます。
Route:: name ( " admin. " )-> group ( function () {
Route:: get ( " /posts " , function () {
// name: app.posts
})-> name ( " app.posts " , true );
});
方法:
関数 | パラメータ | パラメータ | パラメータ |
---|---|---|---|
リダイレクト | 文字列 $uri | 文字列 $redirect | Int $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 のインスタンスが得られます。ルートに動的パラメーター (必須またはオプション) がある場合は、Request インスタンスを受信する前にそれらのパラメーターを渡す必要があります。
関数 | パラメータ | パラメータ |
---|---|---|
getParams | ||
パス | ||
URL | ||
フルURL | ||
ヘッダ | 文字列 $header | 文字列 $default |
ヘッダーあり | 文字列 $header | |
ip | ||
クエリ | ?文字列 $query | ?文字列 $default |
全て | ?文字列 $exc | |
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 ());
});
Request メソッドは、すべてのフォーム データ、クエリ パラメーター、動的ルート パラメーター、およびリクエスト ヘッダー全体を含むメソッドです。
pathメソッドはリクエストのパス情報を返します。したがって、受信リクエストがhttp://localhost/foo/barをターゲットにしている場合、 path メソッドはfoo/bar を返します。
$ uri = $ request -> path ();
受信リクエストの完全な URL を取得するには、 url メソッドまたはfullUrlメソッドを使用できます。 urlメソッドはクエリ文字列を含まない URL を返しますが、 fullUrlメソッドにはクエリ文字列が含まれます。
$ url = $ request -> url ();
$ urlWithQueryString = $ request -> fullUrl ();
header メソッドを使用して、 minasrouter HttpRequestインスタンスからリクエスト ヘッダーを取得できます。リクエストにヘッダーが存在しない場合は、null が返されます。ただし、ヘッダー メソッドは、リクエストにヘッダーが存在しない場合に返されるオプションの 2 番目の引数を受け入れます。
$ value = $ request -> header ( " Header-Name " );
$ value = $ request -> header ( " Header-Name " , " default " );
hasHeaderメソッドは、リクエストに特定のヘッダーが含まれているかどうかを判断するために使用できます。
if ( $ request -> hasHeader ( " Header-Name " )) {
// ...
}
bearerTokenメソッドを使用して、Authorization ヘッダーからベアラー トークンを取得できます。そのようなヘッダーが存在しない場合は、null が返されます。
$ token = $ request -> bearerToken ();
ipメソッドは、Web サイトにリクエストを行ったクライアントの IP アドレスを取得するために使用できます。
$ ipAddress = $ request -> ip ();
クエリメソッドはクエリ文字列から値のみを取得します。
$ id = $ request -> query ( " id " );
要求されたクエリ文字列値データが存在しない場合、このメソッドの 2 番目の引数が返されます。
$ 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 リクエストであるかに関係なく使用できます。一部のデータを無効にしたい場合は、それを 2 番目のパラメーターとして渡すことができます。
$ 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 ' )) {
// ...
}