ホームページ >バックエンド開発 >PHPチュートリアル >Laravelルーティングで不定数のパラメータを実装する方法に関する関連説明

Laravelルーティングで不定数のパラメータを実装する方法に関する関連説明

jacklove
jackloveオリジナル
2018-07-06 17:43:212052ブラウズ

最近、laravel を学習中に面白い場所を発見しました。以下に共有します。この記事では主に、Laravel ルーティングで可変数のパラメータを実装する方法に関する関連情報を紹介します。記事ではサンプルコードを使用していますとても詳しく紹介されているので、必要な友達は参考にして一緒に見てみましょう。

まえがき

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 フレームワーク チュートリアルブレード テンプレートの初心者向け

php によって生成された低品質のサムネイルを解決するコードの説明

PHP スタックによって実装データ構造例の説明

#

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

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