国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

BingqiChen / 1348人閱讀

摘要:是用戶自定義函數中支持可變數量的參數列表。在及更早版本中,使用函數,,和。可變數量的參數列表,這個概念可能你會覺得很抽象。我們再看一個示例以上例程會輸出可變數量參數將被傳遞到中,給定的數組會作為參數變量。

最近在讀 Laravel 源碼的時候,發現了一個段特別有趣的代碼,大家請看:

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

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

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

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

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

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

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

以上例程會輸出:

10

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

我們再看一個示例:

以上例程會輸出:

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  IlluminateRoutingRoute  $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 作者泰勒腦路清奇啊!

最近有人留言問我,Laravel 的路由原理是什么?Laravel 的路由是如何分配到 Controller 中的方法中呢?

下一篇文章,我會講解 Laravel 路由的實現過程以及原理。

大家可以關注一下我的公眾號哦!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26177.html

相關文章

  • 記一次 Laravel 應用性能調優經歷

    摘要:為了一探究竟,于是開啟了這次應用性能調優之旅。使用即時編譯器和都能輕輕松松的讓你的應用程序在不用做任何修改的情況下,直接提高或者更高的性能。 這是一份事后的總結。在經歷了調優過程踩的很多坑之后,我們最終完善并實施了初步的性能測試方案,通過真實的測試數據歸納出了 Laravel 開發過程中的一些實踐技巧。 0x00 源起 最近有同事反饋 Laravel 寫的應用程序響應有點慢、20幾個并...

    warkiz 評論0 收藏0
  • Laravel 路由研究之domain 解決多域名問題

    摘要:關于路由中的在多域名下的說明首先,我們需要知道決定了路由會綁定到哪個控制器,還有一點需要注意,路由中的屬性,決定了輔助函數生成的。 材料準備 一份干凈的laravel 兩份Nginx配置文件,主要配置如下: server_name *.amor_laravel_test_1.amor; root /var/www/amor_laravel_test/public; index in...

    bladefury 評論0 收藏0
  • Laravel 路由研究之domain 解決多域名問題

    摘要:關于路由中的在多域名下的說明首先,我們需要知道決定了路由會綁定到哪個控制器,還有一點需要注意,路由中的屬性,決定了輔助函數生成的。 材料準備 一份干凈的laravel 兩份Nginx配置文件,主要配置如下: server_name *.amor_laravel_test_1.amor; root /var/www/amor_laravel_test/public; index in...

    baishancloud 評論0 收藏0
  • php面試總結

    摘要:由一層函數調用進入下一層函數調用的遞推。此時,中的一個稱為孤兒的類就會收留這個對象。禁止訪問服務器拒絕請求服務器找不到請求的頁面服務器內部錯誤壞的網關一般是網關服務器請求后端服務時,后端服務沒有按照協議正確返回結果。 持續更新。。。。 php 1. 簡述 php 中的 autoload Autoload 的加載機制,當通過 new 來實例化一個類時,PHP 會通過定義的 autol...

    greatwhole 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<