ホームページ >バックエンド開発 >PHPチュートリアル >Laravelルーティングで不定数のパラメータを実装する方法に関する関連説明
最近、laravel を学習中に面白い場所を発見しました。以下に共有します。この記事では主に、Laravel ルーティングで可変数のパラメータを実装する方法に関する関連情報を紹介します。記事ではサンプルコードを使用していますとても詳しく紹介されているので、必要な友達は参考にして一緒に見てみましょう。
まえがき
laravel は良いフレームワークで、私も学習して活用し、社内で推進しています。 Laravel のソース コードを最近調べたところ、特に興味深いコードを見つけました。ぜひご覧ください:
... これら 3 つのポイントは何に使用されますか? PHPのマニュアルを確認したところ、これを可変数パラメータリストと呼ぶことがわかりました。
これは何に使用されますか? PHPのマニュアルではこのように説明されています。
... は、ユーザー定義関数の可変数のパラメーターをサポートするパラメーター リストです。
... PHP 5.6 以降に存在します。 PHP 5.5 以前では、関数 func_num_args()
、func_get_arg()
、および func_get_args()
を使用します。
<?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 ルーティングとどのような関係があるのでしょうか?
Route::get('user/{id}', 'UsersController@filter'); //路由对应的方法 public function filter($id) { # code... }おそらく次のようなものです:
Route::get('user/{id}/{name}', 'UsersController@filter'); //路由对应的方法 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, 'callAction')) { return $controller->callAction($method, $parameters); } return $controller->{$method}(...array_values($parameters)); }Laravel 作者 Taylor の素晴らしい頭脳に敬意を表します。
概要
興味があるかもしれない記事:Laravel フレームワーク チュートリアルブレード テンプレートの初心者向け
php によって生成された低品質のサムネイルを解決するコードの説明
#
以上がLaravelルーティングで不定数のパラメータを実装する方法に関する関連説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。