ホームページ  >  記事  >  バックエンド開発  >  Laravelルーティングで無制限のパラメータを実装する方法

Laravelルーティングで無制限のパラメータを実装する方法

小云云
小云云オリジナル
2017-12-11 09:07:021920ブラウズ

Laravel は優れたフレームワークです。この記事では、Laravel ルーティングで固定数以外のパラメーターを実装する方法を説明します。必要な方は参考にしていただければ幸いです。 。

... この3つのポイントは何に使われますか? PHPのマニュアルを確認したところ、これを可変数パラメータリストと呼ぶことがわかりました。

これは何に使われますか? PHPのマニュアルではこのように説明されています。

... は、可変数のパラメーター リストをサポートするユーザー定義関数です。

... PHP 5.6 以降で利用可能です。 PHP 5.5 以前では、関数 func_num_args()func_get_arg() ,和 func_get_args() を使用します。

パラメータリストの可変数、この概念はあなたにとって抽象的に見えるかもしれません。

このように理解すると、関数または特定の関数をカスタマイズしましたが、この関数のパラメータの数は固定されておらず、パラメータリストの可変数です。

可変数のパラメーター リストに関して、2 つの例を見てみましょう。

<?php
function sum(...$numbers) {
 $acc = 0;
 foreach ($numbers as $n) {
  $acc += $n;
 }
 return $acc;
}
echo sum(1, 2, 3, 4);
?>

上記のルーチンは次の出力を行います:

10

可変数のパラメーターが関数に渡され、指定されたパラメータ変数は配列として扱われます。

別の例を見てみましょう:

<?php
function add($a, $b) {
 return $a + $b;
}
echo add(...[1, 2])
?>

上記のルーチンは出力します:

3

可変数のパラメータが関数に渡され、指定された配列がパラメータとして使用されます変数。

この変数の数はLaravelのルーティングとどのような関係があるのでしょうか?

Laravel では、ルーティングを非常に自由にカスタマイズできます。たとえば、次のようになります:

Route::get(&#39;user/{id}&#39;, &#39;UsersController@filter&#39;);
//路由对应的方法
public function filter($id)
{
 # code...
}

おそらく次のようになります:

Route::get(&#39;user/{id}/{name}&#39;, &#39;UsersController@filter&#39;);
//路由对应的方法
public function filter($id, $name)
{
 # code...
}

これは、 Laravelルーティングの場合 固定数のパラメータはコードにどのように実装されますか?使用されるのは可変数のパラメーターです。

// */vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php
/**
 * Dispatch a request to a given controller and method.
 *
 * @param \Illuminate\Routing\Route $route
 * @param mixed $controller
 * @param string $method
 * @return mixed
 */
public function dispatch(Route $route, $controller, $method)
{
 $parameters = $this->resolveClassMethodDependencies(
  $route->parametersWithoutNulls(), $controller, $method
 );
 if (method_exists($controller, &#39;callAction&#39;)) {
  return $controller->callAction($method, $parameters);
 }
 return $controller->{$method}(...array_values($parameters));
}

Laravel 作者 Taylor の素晴らしい頭脳を賞賛しなければなりません!

もう学びましたか?急いで試してみてください。

関連する推奨事項:

Laravelでのデータ移行とデータ充填の詳細な手順

Laravelフレームワークのパフォーマンス調整方法

Laravelのブレードテンプレートエンジンの詳細な説明

以上がLaravelルーティングで無制限のパラメータを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。