Maison >développement back-end >tutoriel php >Explications connexes sur la façon d'implémenter un nombre non fixe de paramètres dans le routage Laravel

Explications connexes sur la façon d'implémenter un nombre non fixe de paramètres dans le routage Laravel

jacklove
jackloveoriginal
2018-07-06 17:43:212051parcourir

J'ai récemment découvert un endroit intéressant lorsque j'apprenais Laravel. Je vais le partager avec vous ci-dessous. Cet article vous présente principalement les informations pertinentes sur la façon d'implémenter un nombre variable de paramètres dans le routage Laravel. L'introduction est très détaillée. Les amis qui en ont besoin peuvent s'y référer.

Préface

Laravel est un bon framework, je l'apprends et l'utilise également, et j'en fais la promotion dans l'entreprise. le code source de Laravel récemment, j'ai trouvé un bout de code particulièrement intéressant, n'hésitez pas à y jeter un oeil :

... A quoi servent ces trois points ? J'ai vérifié le manuel PHP et découvert que cette chose s'appelle un nombre variable de listes de paramètres.

C'est pour quoi ça ? Le manuel PHP l'explique de cette façon.

... est une liste de paramètres qui prend en charge un nombre variable de paramètres dans une fonction définie par l'utilisateur.

... Disponible en PHP 5.6 et supérieur. En PHP 5.5 et versions antérieures, utilisez les fonctions func_num_args() , func_get_arg() et func_get_args() .

Un nombre variable de listes de paramètres, ce concept peut vous paraître abstrait.

Nous pouvons le comprendre de cette façon, nous avons personnalisé une fonction ou une certaine fonction, mais le nombre de paramètres de cette fonction n'est pas fixe, ce qui est un nombre variable de listes de paramètres.

Concernant le nombre variable de listes d'arguments, regardons deux exemples

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

Ci-dessus La routine va ; sortie :

10

Un nombre variable d'arguments sera transmis à la fonction, et la variable d'argument donnée sera un tableau.

Regardons un autre exemple :

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

La routine ci-dessus affichera :

3

Un nombre variable de paramètres sera transmis à la fonction, et le tableau donné sera utilisé comme variable de paramètre.

Qu'est-ce que ce nombre variable de paramètres a à voir avec le routage Laravel ?

Dans Laravel, nous sommes très libres de personnaliser le routage, comme celui-ci :

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

Peut-être que c'est possible :

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

Il n'y a pas de nombre fixe de paramètres dans le routage Laravel, dans le code c'est Comment est-ce atteint ? Ce qui est utilisé est un nombre variable de paramètres.

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

Je dois admirer la clarté d'esprit de l'auteur de Laravel Taylor !

Résumé

Articles qui pourraient vous intéresser :

Tutoriel Laravel Framework pour les débutants dans les modèles de lame

Explication du code pour résoudre les vignettes de mauvaise qualité générées par php

implémenté par PHP Stack Explication de l'exemple de structure de données

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn