How to implement an unlimited number of parameters in Laravel routing

小云云
Release: 2023-03-17 20:52:02
Original
1982 people have browsed it

Laravel is a good framework. This article will teach you how to implement a non-fixed number of parameters in Laravel routing. The article introduces it in detail through sample code. Friends in need can refer to it. I hope it can help everyone.

... What are these three points used for? I checked the PHP manual and found out that this thing is called a variable number of parameter lists.

What is this used for? The PHP manual explains it this way.

... is a parameter list that supports a variable number of parameters in the user-defined function.

... Exists in PHP 5.6 and above. In PHP 5.5 and earlier, use the functions func_num_args(), func_get_arg() , and func_get_args().

A variable number of parameter lists, this concept may seem abstract to you.

We can understand it this way, we have customized a function or a certain function, but the number of parameters of this function is not fixed, which is a variable number of parameter lists.

Regarding variable number of parameter lists, let’s look at two examples;

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

The above routine Will output:

10

A variable number of parameters will be passed to the function, and the given parameter variables will be used as an array.

Let’s look at another example:

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

The above routine will output:

3

A variable number of parameters will be passed to the function, and the given array will be used as the parameter variable.

What does this variable number of parameters have to do with Laravel routing?

In Laravel, we are very free to customize routing, for example, it looks like this:

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

Maybe it’s like this:

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

How is the unfixed number of parameters in Laravel routing implemented in the code? ? What is used is a variable number of parameters.

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

I have to admire Laravel author Taylor for his brilliant mind!

Have you learned it? Hurry up and give it a try.

Related recommendations:

Detailed steps for data migration and data filling in Laravel

Laravel framework performance tuning method

Detailed explanation of Blade template engine in Laravel

The above is the detailed content of How to implement an unlimited number of parameters in Laravel routing. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template