Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie eine unbegrenzte Anzahl von Parametern im Laravel-Routing

So implementieren Sie eine unbegrenzte Anzahl von Parametern im Laravel-Routing

小云云
小云云Original
2017-12-11 09:07:021921Durchsuche

In diesem Artikel erfahren Sie, wie Sie eine nicht feste Anzahl von Parametern im Laravel-Routing implementieren. Ich hoffe, dass der Artikel darauf verweisen kann allen helfen.

... Wofür werden diese drei Punkte verwendet? Ich habe im PHP-Handbuch nachgeschaut und herausgefunden, dass es sich bei diesem Ding um eine variable Anzahl von Parameterlisten handelt.

Wofür ist das? Das PHP-Handbuch erklärt es so.

... ist eine Parameterliste, die eine variable Anzahl von Parametern in einer benutzerdefinierten Funktion unterstützt.

... Verfügbar in PHP 5.6 und höher. Verwenden Sie in PHP 5.5 und früher die Funktionen func_num_args() , func_get_arg() und func_get_args() .

Eine variable Anzahl von Parameterlisten, dieses Konzept mag Ihnen abstrakt erscheinen.

Wir können es so verstehen: Wir haben eine Funktion oder eine bestimmte Funktion angepasst, aber die Anzahl der Parameter dieser Funktion ist nicht festgelegt, es handelt sich um eine variable Anzahl von Parameterlisten.

Bezüglich der variablen Anzahl von Argumentlisten schauen wir uns zwei Beispiele an:

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

Oben: Die Routine wird Ausgabe:

10

Eine variable Anzahl von Argumenten wird an die Funktion übergeben und die angegebene Argumentvariable ist ein Array.

Sehen wir uns ein weiteres Beispiel an:

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

Die obige Routine gibt Folgendes aus:

3

Eine variable Anzahl von Parametern wird an die Funktion übergeben und das angegebene Array wird als Parametervariable verwendet.

Was hat diese variable Anzahl von Parametern mit dem Laravel-Routing zu tun?

In Laravel können wir das Routing sehr frei anpassen, wie zum Beispiel:

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

Vielleicht ist das möglich:

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

Es gibt keine feste Anzahl von Parametern im Laravel-Routing, im Code ist es Wie ist es erreicht? Es wird eine variable Anzahl von Parametern verwendet.

// */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));
}

Ich muss die Klarheit des Geistes des Laravel-Autors Taylor bewundern!

Hast du es schon gelernt? Beeilen Sie sich und probieren Sie es aus.

Verwandte Empfehlungen:

Detaillierte Schritte zur Datenmigration und Datenfüllung in Laravel

Methode zur Leistungsoptimierung des Laravel-Frameworks

Detaillierte Erklärung der Blade-Template-Engine in Laravel

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine unbegrenzte Anzahl von Parametern im Laravel-Routing. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn