Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


slim:4:routing

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
slim:4:routing [2020/10/09 20:36]
y2sunlight [Format]
slim:4:routing [2020/10/10 21:27] (現在)
y2sunlight [インボーク可能なクラスの使用]
行 284: 行 284:
 \\ \\
  
-==== Optional segments ====+==== オプションセグメント ====
  
-To make a section optional, simply wrap in square brackets: +セクションをオプションにするには、角括弧(''[]'')で囲みます:
- +
-セクションをオプションにするには、角かっこで囲みます:+
  
 <code php> <code php>
行 299: 行 297:
 </code> </code>
  
-Multiple optional parameters are supported by nesting: +ネストする事により、複数のオプションパラメータがサポートされます:
- +
-ネストにより、複数のオプションパラメータがサポートされます:+
  
 <code php> <code php>
行 312: 行 308:
 </code> </code>
  
-For “Unlimited” optional parameters, you can do this: +オプションパラメータが「無制限」の場合、以下のように行うことができます:
- +
-「無制限」のオプションパラメータの場合、これを行うことができます:+
  
 <code php> <code php>
行 326: 行 320:
 </code> </code>
  
-In this example, a URI of ''/news/2016/03/20'' would result in the ''$params'' array containing three elements: ''['2016', '03', '20']''+の例では、URIが ''/news/2016/03/20'' の場合、''['2016', '03', '20']''の3つの要素を含む ''$params'' 配列になります。
- +
-の例では、URIが ''/news/2016/03/20 '' の場合、''['2016', '03', '20']''の3つの要素を含む ''$params'' 配列になります。+
  
 \\ \\
  
-==== Regular expression matching ==== +==== 正規表現マッチング ====
- +
-By default the placeholders are written inside ''{}'' and can accept any values. However, placeholders can also require the HTTP request URI to match a particular regular expression. If the current HTTP request URI does not match a placeholder regular expression, the route is not invoked. This is an example placeholder named ''id'' that requires one or more digits.+
  
-デフォルトでは、プレースホルダーは ''{}'' 内に記述され、任意の値を受け入れることができます。ただし、プレースホルダーは、特定の正規表現に一致するようにHTTPリクエストURIを要求することもできます。現在のHTTPリクエストURIがプレースホルダーの正規表現と一致しない場合、ルートは呼び出されません。これは、1つ以上の数字を必要とする ''id'' という名前のプレースホルダーの例です。+デフォルトでは、プレースホルダーは ''{}'' 内に記述され、任意の値を受け入れることができます。ただし、プレースホルダーは、特定の正規表現に一致するようにHTTPリクエストURIを要求することもできます。現在のHTTPリクエストURIがプレースホルダーの正規表現と一致しない場合、ルートは呼び出されません。以下は、1つ以上の数字を必要とする ''id'' という名前のプレースホルダーの例です。
  
 <code php> <code php>
行 349: 行 339:
 \\ \\
  
-===== Route names =====+===== ルート名 =====
  
-Application routes can be assigned a name. This is useful if you want to programmatically generate a URL to a specific route with the RouteParser’s ''urlFor()'' method. Each routing method described above returns a ''Slim\Route'' object, and this object exposes a ''setName()'' method. +アプリケーションルートには名前を付けることができます。これは、RouteParser の ''urlFor()'' メソッドを使用して特定のルートへのURLをプログラムで生成したい場合に役立ちます。上記の各ルーティングメソッドは ''Slim\Route'' オブジェクトを返し、このオブジェクトは ''setName()'' メソッドを公開します。
- +
-アプリケーションルートには名前を付けることができます。これは、RouteParser の ''urlFor()'' メソッドを使用して特定のルートへのURLをプログラムで生成する場合に役立ちます。上記の各ルーティングメソッドは ''Slim\Route'' オブジェクトを返し、このオブジェクトは ''setName()'' メソッドを公開します。+
  
 <code php> <code php>
行 361: 行 349:
 })->setName('hello'); })->setName('hello');
 </code> </code>
- 
-You can generate a URL for this named route with the application RouteParser’s urlFor() method. 
  
 この名前付きルートのURLは、アプリケーション RouteParser の ''urlFor()'' メソッドを使用して生成できます。 この名前付きルートのURLは、アプリケーション RouteParser の ''urlFor()'' メソッドを使用して生成できます。
行 373: 行 359:
 </code> </code>
  
-The RouteParser’s urlFor() method accepts three arguments: +RouteParser の ''urlFor()'' メソッドは、次の3つの引数を受け入れます
- +
-RouteParser の ''urlFor()'' メソッドは、次の3つの引数を受け入れます。 +
- +
-  * $routeName The route name. A route’s name can be set via $route->setName('name'). Route mapping methods return an instance of Route so you can set the name directly after mapping the route. e.g.: $app->get('/', function () {...})->setName('name'+
-  * $data Associative array of route pattern placeholders and replacement values. +
-  * $queryParams Associative array of query parameters to be appended to the generated url.+
  
   * ''$routeName'' ルート名。ルートの名前は、''$route->setName('name')'' を介して設定できます。ルートマッピングメソッドは ''Route'' のインスタンスを返すため、ルートをマッピングした直後に名前を設定できます。例:''$app->get('/', function(){...})-> setName('name')''   * ''$routeName'' ルート名。ルートの名前は、''$route->setName('name')'' を介して設定できます。ルートマッピングメソッドは ''Route'' のインスタンスを返すため、ルートをマッピングした直後に名前を設定できます。例:''$app->get('/', function(){...})-> setName('name')''
-  * ''$data'' ルートパターンプレースホルダーと置換値の連想配列。+  * ''$data'' ルートパターンプレースホルダーと置換値の連想配列。
   * ''$queryParams'' 生成されたURLに追加されるクエリパラメータの連想配列。   * ''$queryParams'' 生成されたURLに追加されるクエリパラメータの連想配列。
  
 \\ \\
  
-===== Route groups ===== +===== ルートグループ =====
- +
-To help organize routes into logical groups, the ''Slim\App'' also provides a ''group()'' method. Each group’s route pattern is prepended to the routes or groups contained within it, and any placeholder arguments in the group pattern are ultimately made available to the nested routes:+
  
-ルートを論理グループに整理するために、''Slim\App'' には ''group()'' メソッドも用意されています。各グループのルートパターンは、そのグループに含まれるルートまたはグループの前に付加され、グループパターン内のプレースホルダー引数は、最終的にネストされたルートで使用できるようになります+ルートを論理グループに整理するために、''Slim\App'' には ''group()'' メソッドも用意されています。各グループのルートパターンは、そのグループに含まれるルートまたはグループの前に付加され、グループパターン内のプレースホルダー引数は、最終的にネストされたルートで使用できるようになります
  
 <code php> <code php>
行 414: 行 392:
 }); });
 </code> </code>
- 
-The group pattern can be empty, enabling the logical grouping of routes that do not share a common pattern. 
  
 グループパターンは空にすることができ、共通のパターンを共有しないルートの論理グループ化を有効にします。 グループパターンは空にすることができ、共通のパターンを共有しないルートの論理グループ化を有効にします。
行 435: 行 411:
 })->add(new GroupMiddleware()); })->add(new GroupMiddleware());
 </code> </code>
- 
-Note inside the group closure, Slim binds the closure to the container instance. 
  
 グループクロージャー内で、Slimはクロージャーをコンテナーインスタンスにバインドすることに注意してください。 グループクロージャー内で、Slimはクロージャーをコンテナーインスタンスにバインドすることに注意してください。
- 
-  * inside route closure, ''$this'' is bound to the instance of ''Psr\Container\ContainerInterface'' 
  
   * ルートクロージャ内で、''$this'' は ''Psr\Container\ContainerInterface'' のインスタンスにバインドされます   * ルートクロージャ内で、''$this'' は ''Psr\Container\ContainerInterface'' のインスタンスにバインドされます
行 446: 行 418:
 \\ \\
  
-===== Route middleware ===== +===== ルートミドルウェア =====
- +
-You can also attach middleware to any route or route group.+
  
 ミドルウェアを任意のルートまたはルートグループにアタッチすることもできます。 ミドルウェアを任意のルートまたはルートグループにアタッチすることもできます。
行 466: 行 436:
 \\ \\
  
-===== Route expressions caching ===== +===== ルーターキャッシュ =====
- +
-It’s possible to enable router cache via ''RouteCollector::setCacheFile()''. See examples below:+
  
-''RouteCollector::setCacheFile()'' を介してルーターキャッシュを有効にすることができます。以下の例を参照してください+''RouteCollector::setCacheFile()'' を介してルーターキャッシュを有効にすることができます。以下の例を参照してください
  
 <code php> <code php>
行 493: 行 461:
 \\ \\
  
-===== Container Resolution =====+===== コンテナ―ソリユーション =====
  
-You are not limited to defining a function for your routes. In Slim there are a few different ways to define your route action functions. +ルートに対しては関数を定義することだけに限定されません。Slimでは、ルートアクション関数を定義するいくつかの異なる方法があります。
- +
-ルート関数を定義することに限定されません。Slimでは、ルートアクション関数を定義するいくつかの異なる方法があります。 +
- +
-In addition to a function, you may use:+
  
 関数に加えて、次のものを使用できます: 関数に加えて、次のものを使用できます:
  
-  * container_key:method +  * コンテナ―キーメソッド
-  * Class:method +
-  * Class implementing ''<nowiki>__invoke()</nowiki>'' method +
-  * container_key +
- +
-  * container_keymethod+
   * クラス:メソッド   * クラス:メソッド
-  * ''<nowiki>__invoke()</nowiki> ''メソッドを実装するクラス +  * ''<nowiki>__invoke()</nowiki> '' メソッドを実装するクラス 
-  * container_key+  * コンテナ―キー
  
-This functionality is enabled by Slim’s Callable Resolver Class. It translates a string entry into a function call. Example: +この機能は、Slim の Callable Resolver Class によって有効になります。それは、文字列エントリを関数呼び出しに変換します。例:
- +
-この機能は、Slim の Callable Resolver Class によって有効になります。文字列エントリを関数呼び出しに変換します。例:+
  
 <code php> <code php>
行 521: 行 478:
 </code> </code>
  
-Alternatively, you can take advantage of PHP’s ''::class'' operator which works well with IDE lookup systems and produces the same result: +または、PHPの ''::class'' 演算子を利用することもできます。これは、IDEルックアップシステムで適切に機能し、同じ結果を生成します
- +
-または、PHPの ''::class'' 演算子を利用することもできます。これは、IDEルックアップシステムで適切に機能し、同じ結果を生成します+
  
 <code php> <code php>
 $app->get('/', \HomeController::class . ':home'); $app->get('/', \HomeController::class . ':home');
 </code> </code>
- 
-In this code above we are defining a ''/'' route and telling Slim to execute the ''home()'' method on the ''HomeController'' class. 
  
 上記のコードでは、''/'' ルートを定義し、''HomeController'' クラスで ''home()'' メソッドを実行するようにSlimに指示しています。 上記のコードでは、''/'' ルートを定義し、''HomeController'' クラスで ''home()'' メソッドを実行するようにSlimに指示しています。
  
-Slim first looks for an entry of ''HomeController'' in the container, if it’s found it will use that instance otherwise it will call it’s constructor with the container as the first argument. Once an instance of the class is created it will then call the specified method using whatever Strategy you have defined. +Slimは最初にコンテナ内の ''HomeController'' のエントリを探します。見つかった場合はそのインスタンスを使用し、そうでない場合はコンテナを最初の引数としてコンストラクタを呼び出します。クラスのインスタンスが作成されると、定義したストラテジーを使用して、指定されたメソッドが呼び出されます。
- +
-Slimは最初にコンテナ内の ''HomeController'' のエントリを探します。見つかった場合はそのインスタンスを使用し、そうでない場合はコンテナを最初の引数としてコンストラクタを呼び出します。 クラスのインスタンスが作成されると、定義したストラテジーを使用して、指定されたメソッドが呼び出されます。+
  
 \\ \\
  
  
-==== Registering a controller with the container ==== +==== コントローラーをコンテナーに登録する ====
- +
-Create a controller with the ''home'' action method. The constructor should accept the dependencies that are required. For example:+
  
-''home'' アクションメソッドを使用してコントローラーを作成します。コンストラクターは、必要な依存関係を受け入れる必要があります。 例えば:+''home'' アクションメソッドを伴うコントローラーを作成します。コンストラクターは、必要な依存関係を受け入れる必要があります。 例えば:
  
 <code php> <code php>
行 572: 行 521:
 } }
 </code> </code>
- 
-Create a factory in the container that instantiates the controller with the dependencies: 
  
 依存関係を持つコントローラーをインスタンス化するファクトリをコンテナーに作成します。 依存関係を持つコントローラーをインスタンス化するファクトリをコンテナーに作成します。
行 590: 行 537:
 }); });
 </code> </code>
- 
-This allows you to leverage the container for dependency injection and so you can inject specific dependencies into the controller. 
  
 これにより、依存関係の注入にコンテナーを活用できるため、特定の依存関係をコントローラーに注入できます。 これにより、依存関係の注入にコンテナーを活用できるため、特定の依存関係をコントローラーに注入できます。
行 597: 行 542:
 \\ \\
  
-==== Allow Slim to instantiate the controller ====+==== Slimがコントローラーをインスタンス化できるようにする ====
  
-Alternatively, if the class does not have an entry in the container, then Slim will pass the container’s instance to the constructor. You can construct controllers with many actions instead of an invokable class which only handles one action. +また、クラスコンテナにエントリされていない場合、Slimはコンテナのインスタンスをそのクラスのコンストラクタに渡します。つのアクションのみを処理する呼び出し可能なクラスの代わりに、多くのアクションを持つコントローラーを構築できるのです。
- +
-また、クラスコンテナにエントリない場合、Slimはコンテナのインスタンスをコンストラクタに渡します。 1つのアクションのみを処理する呼び出し可能なクラスの代わりに、多くのアクションを持つコントローラーを構築できす。+
  
 <code php> <code php>
行 636: 行 579:
 </code> </code>
  
-You can use your controller methods like so. +このコントローラーメソッドは次のように使用できます。
- +
-このようにコントローラーメソッド使用できます。+
  
 <code php> <code php>
行 647: 行 588:
 \\ \\
  
-==== Using an invokable class ====+==== インボーク可能なアクションクラスの使用 ====
  
-You do not have to specify a method in your route callable and can just set it to be an invokable class such as: +ルート呼び出しメソッドを指定する必要はなく、次のようなインボーク可能なアクションクラスとして設定するだけです:
- +
-ルート呼び出し可能メソッドでメソッドを指定する必要はなく、次のような呼び出し可能クラス設定するだけです:+
  
 <code php> <code php>
行 678: 行 617:
 </code> </code>
  
-You can use this class like so. +このクラスはのように使用できます。
- +
-このクラスはのように使用できます。+
  
 <code php> <code php>
行 686: 行 623:
 </code> </code>
  
-Again, as with controllers, if you register the class name with the container, then you can create a factory and inject just the specific dependencies that you require into your action class. +繰り返しになりますが、コントローラーを使った場合と同様に、クラス名をコンテナーに登録すると、ファクトリを作成して、アクションクラスに必要としている特定の依存関係だけを入できます。
- +
-繰り返しますが、コントローラー場合と同様に、クラス名をコンテナーに登録すると、ファクトリを作成して、必要特定の依存関係だけをアクションクラスに挿入できます。+
  
 \\ \\
  
slim/4/routing.1602243377.txt.gz · 最終更新: 2020/10/09 20:36 by y2sunlight