摘要:是用戶自定義函數(shù)中支持可變數(shù)量的參數(shù)列表。在及更早版本中,使用函數(shù),,和。可變數(shù)量的參數(shù)列表,這個(gè)概念可能你會(huì)覺得很抽象。我們?cè)倏匆粋€(gè)示例以上例程會(huì)輸出可變數(shù)量參數(shù)將被傳遞到中,給定的數(shù)組會(huì)作為參數(shù)變量。
最近在讀 Laravel 源碼的時(shí)候,發(fā)現(xiàn)了一個(gè)段特別有趣的代碼,大家請(qǐng)看:
... 這三個(gè)點(diǎn)是做什么用的呢?我查了 PHP 的手冊(cè)后發(fā)現(xiàn),這個(gè)東西叫做可變數(shù)量的參數(shù)列表。
這個(gè)是干啥用的呢?PHP 手冊(cè)是這么解釋的。
... 是用戶自定義函數(shù)中支持可變數(shù)量的參數(shù)列表。
... 存在于 PHP 5.6 及以上的版本中。 在 PHP 5.5 及更早版本中,使用函數(shù) func_num_args(),func_get_arg(),和 func_get_args() 。
可變數(shù)量的參數(shù)列表,這個(gè)概念可能你會(huì)覺得很抽象。
我們可以這么來(lái)理解,我們自定義了一個(gè)函數(shù)或者某個(gè) function,但是這個(gè) function 的參數(shù)數(shù)量是不固定的,這也就是可變數(shù)量的參數(shù)列表。
關(guān)于可變數(shù)量的參數(shù)列表,讓我們來(lái)看兩個(gè)示例;
以上例程會(huì)輸出:
10
可變數(shù)量參數(shù)將被傳遞到 function 中,給定的參數(shù)變量會(huì)作為數(shù)組。
我們?cè)倏匆粋€(gè)示例:
以上例程會(huì)輸出:
3
可變數(shù)量參數(shù)將被傳遞到 function 中,給定的數(shù)組會(huì)作為參數(shù)變量。
這個(gè)可變數(shù)量參數(shù),又和 Laravel 路由有什么關(guān)系呢?
在 Laravel 中,我們自定義路由是非常自由的,比如是這樣的:
Route::get("user/{id}", "UsersController@filter"); //路由對(duì)應(yīng)的方法 public function filter($id) { # code... }
或許有可能這樣的:
Route::get("user/{id}/{name}", "UsersController@filter"); //路由對(duì)應(yīng)的方法 public function filter($id, $name) { # code... }
Laravel 路由中這樣不固定數(shù)量參數(shù),在代碼中是如何實(shí)現(xiàn)的呢?使用的就是可變數(shù)量參數(shù)。
// */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 作者泰勒腦路清奇啊!
最近有人留言問(wèn)我,Laravel 的路由原理是什么?Laravel 的路由是如何分配到 Controller 中的方法中呢?
下一篇文章,我會(huì)講解 Laravel 路由的實(shí)現(xiàn)過(guò)程以及原理。
大家可以關(guān)注一下我的公眾號(hào)哦!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/26177.html
摘要:為了一探究竟,于是開啟了這次應(yīng)用性能調(diào)優(yōu)之旅。使用即時(shí)編譯器和都能輕輕松松的讓你的應(yīng)用程序在不用做任何修改的情況下,直接提高或者更高的性能。 這是一份事后的總結(jié)。在經(jīng)歷了調(diào)優(yōu)過(guò)程踩的很多坑之后,我們最終完善并實(shí)施了初步的性能測(cè)試方案,通過(guò)真實(shí)的測(cè)試數(shù)據(jù)歸納出了 Laravel 開發(fā)過(guò)程中的一些實(shí)踐技巧。 0x00 源起 最近有同事反饋 Laravel 寫的應(yīng)用程序響應(yīng)有點(diǎn)慢、20幾個(gè)并...
摘要:關(guān)于路由中的在多域名下的說(shuō)明首先,我們需要知道決定了路由會(huì)綁定到哪個(gè)控制器,還有一點(diǎn)需要注意,路由中的屬性,決定了輔助函數(shù)生成的。 材料準(zhǔn)備 一份干凈的laravel 兩份Nginx配置文件,主要配置如下: server_name *.amor_laravel_test_1.amor; root /var/www/amor_laravel_test/public; index in...
摘要:關(guān)于路由中的在多域名下的說(shuō)明首先,我們需要知道決定了路由會(huì)綁定到哪個(gè)控制器,還有一點(diǎn)需要注意,路由中的屬性,決定了輔助函數(shù)生成的。 材料準(zhǔn)備 一份干凈的laravel 兩份Nginx配置文件,主要配置如下: server_name *.amor_laravel_test_1.amor; root /var/www/amor_laravel_test/public; index in...
摘要:由一層函數(shù)調(diào)用進(jìn)入下一層函數(shù)調(diào)用的遞推。此時(shí),中的一個(gè)稱為孤兒的類就會(huì)收留這個(gè)對(duì)象。禁止訪問(wèn)服務(wù)器拒絕請(qǐng)求服務(wù)器找不到請(qǐng)求的頁(yè)面服務(wù)器內(nèi)部錯(cuò)誤壞的網(wǎng)關(guān)一般是網(wǎng)關(guān)服務(wù)器請(qǐng)求后端服務(wù)時(shí),后端服務(wù)沒有按照協(xié)議正確返回結(jié)果。 持續(xù)更新。。。。 php 1. 簡(jiǎn)述 php 中的 autoload Autoload 的加載機(jī)制,當(dāng)通過(guò) new 來(lái)實(shí)例化一個(gè)類時(shí),PHP 會(huì)通過(guò)定義的 autol...
閱讀 741·2021-11-23 09:51
閱讀 2443·2021-10-11 11:10
閱讀 1313·2021-09-23 11:21
閱讀 1098·2021-09-10 10:50
閱讀 894·2019-08-30 15:54
閱讀 3335·2019-08-30 15:53
閱讀 3294·2019-08-30 15:53
閱讀 3194·2019-08-29 17:23