久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Laravel路由中不固定數量的參數如何實現?

最近在學習laravel的時候發現了一個有趣的地方,下面和大家分享下,這篇文章主要給大家介紹了關于Laravel路由中不固定數量的參數是如何實現的相關資料,文中通過示例代碼介紹的非常

前言

laravel是個好框架,我也在學習和使用,并且在公司里推廣,最近在讀 Laravel 源碼的時候,發現了一個段特別有趣的代碼,大家請看:

Laravel路由中不固定數量的參數如何實現?

... 這三個點是做什么用的呢?我查了 PHP 的手冊后發現,這個東西叫做可變數量的參數列表。

這個是干啥用的呢?PHP 手冊是這么解釋的。

... 是用戶自定義函數中支持可變數量的參數列表。

... 存在于 PHP 5.6 及以上的版本中。 在 PHP 5.5 及更早版本中,使用函數 func_num_args()func_get_arg() ,和 func_get_args()

可變數量的參數列表,這個概念可能你會覺得很抽象。

我們可以這么來理解,我們自定義了一個函數或者某個 function,但是這個 function 的參數數量是不固定的,這也就是可變數量的參數列表。

關于可變數量的參數列表,讓我們來看兩個示例;

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

以上例程會輸出:

10

可變數量參數將被傳遞到 function 中,給定的參數變量會作為數組。

我們再看一個示例:

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

以上例程會輸出:

3

可變數量參數將被傳遞到 function 中,給定的數組會作為參數變量。

這個可變數量參數,又和 Laravel 路由有什么關系呢?

在 Laravel 中,我們自定義路由是非常自由的,比如是這樣的:

Route::get('user/{id}', 'UsersController@filter');
//路由對應的方法
public function filter($id)
{
 # code...
}

或許有可能這樣的:

Route::get('user/{id}/{name}', 'UsersController@filter');
//路由對應的方法
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, 'callAction')) {
  return $controller->callAction($method, $parameters);
 }
 return $controller->{$method}(...array_values($parameters));
}

不得不讓人佩服 Laravel 作者泰勒腦路清奇啊!

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對的支持。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

下面小編就為大家分享一篇laravel ORM 只開啟created_at的幾種方法總結,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要給大家介紹了如何通過源碼解析Laravel的依賴注入的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著
這篇文章主要給大家介紹了關于Laravel中unique和exists驗證規則的優化的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面
最近在使用laravel5.5,利用其實現了一個功能,下面分享給大家,這篇文章主要給大家介紹了關于Laravel 5.5基于內置的Auth模塊如何實現前后臺登陸的相關資料,文中通過示例代碼介紹的非
laravel 的隊列服務對各種不同的后臺隊列服務提供了統一的 API,下面這篇文章通過源碼分析給大家介紹了關于 Laravel 重復執行同一個隊列任務的原因,文中通過示例代碼介紹的非常詳細
這篇文章主要給大家介紹了關于 Laravel Redis 多個進程同時取隊列問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友下面來
主站蜘蛛池模板: 久久一区二区精品 | 国产日韩久久 | 91久久久久| 国产一区二区观看 | 91色站| 日本在线看片 | 51ⅴ精品国产91久久久久久 | 视频1区 | 国产精品美女久久久久久免费 | 在线欧美视频 | 欧美久久视频 | 紧缚调教一区二区三区视频 | 热re99久久精品国99热观看 | 极品销魂美女一区二区 | 一级免费毛片 | 欧美视频一区二区三区 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 国产 日韩 欧美 制服 另类 | 噜噜噜噜狠狠狠7777视频 | 成人在线中文字幕 | 国产精品毛片在线 | 欧美在线激情 | 国产日韩欧美在线一区 | 久久亚洲精品视频 | 一级黄a视频| 精品国产一区二区三区在线观看 | 亚洲美女在线一区 | 在线国产一区 | 一区视频| 三级在线观看 | 久久精品美女 | 欧美视频在线播放 | 国产精品视频中文字幕 | 久久久久久久久久久久久久久久久久久久 | 国产精品久久毛片av大全日韩 | 天天操天天操 | 免费国产成人av | 亚洲九九 | 蜜桃av一区二区三区 | 国产乱码精品一区二区三区av | 婷婷色网 |