最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Laravel路由中不固定數(shù)量的參數(shù)如何實現(xiàn)?

 更新時間:2017年12月10日 11:56:04   作者:無銘  
最近在學習laravel的時候發(fā)現(xiàn)了一個有趣的地方,下面和大家分享下,這篇文章主要給大家介紹了關(guān)于Laravel路由中不固定數(shù)量的參數(shù)是如何實現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

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

... 這三個點是做什么用的呢?我查了 PHP 的手冊后發(fā)現(xiàn),這個東西叫做可變數(shù)量的參數(shù)列表。

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

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

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

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

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

關(guān)于可變數(shù)量的參數(shù)列表,讓我們來看兩個示例;

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

以上例程會輸出:

10

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

我們再看一個示例:

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

以上例程會輸出:

3

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

這個可變數(shù)量參數(shù),又和 Laravel 路由有什么關(guān)系呢?

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

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

或許有可能這樣的:

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

Laravel 路由中這樣不固定數(shù)量參數(shù),在代碼中是如何實現(xiàn)的呢?使用的就是可變數(shù)量參數(shù)。

// */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 作者泰勒腦路清奇?。?/p>

總結(jié)

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

相關(guān)文章

最新評論

上饶县| 余江县| 杭锦后旗| 宜兴市| 洞口县| 正安县| 甘肃省| 郯城县| 临夏市| 札达县| 个旧市| 铜陵市| 巫溪县| 钦州市| 磴口县| 旬邑县| 聊城市| 东兴市| 阜康市| 姜堰市| 阿城市| 康平县| 扎鲁特旗| 吉安县| 金乡县| 秭归县| 阿拉善右旗| 阿克苏市| 阿尔山市| 新晃| 儋州市| 南和县| 阿拉尔市| 侯马市| 绩溪县| 格尔木市| 永嘉县| 蕉岭县| 武平县| 开封县| 富阳市|