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

jacklove
Libérer: 2023-04-02 18:54:02
original
1959 Les gens l'ont consulté

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);
?>
Copier après la connexion

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])
?>
Copier après la connexion

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...
}
Copier après la connexion

Peut-être que c'est possible :

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

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));
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!