摘要:接下來就要引入一個概念,可變函數。這意味著如果一個變量名后有圓括號,將尋找與變量的值同名的函數,并且嘗試執行它。示例執行命令行中輸出執行命令行中輸出可變函數的語法來調用一個對象的方法。示例代碼來源可變函數轉載地址
PHP 可變函數
先將我的偽代碼寫上。
protected $model; public function __construct(Category $category) { $this->model = $category; } public function getLists($request, $isPage = "get", $order = "created_at", $sort = "desc") { return $this->model->orderBy($order, $sort)->$isPage(); }
在 getLists 中,有一個 $isPage 的參數。本意是傳入 get 就是獲取全部數據,paginate 就是分頁。寫完以后覺得哪里不對。在我們平常的寫法中,查找全部數據 $this->model->orderBy($order, $sort)->get(); 是這樣的,我也未見過使用變量來替換 get() 的。在實際運行中,程序正常執行。隨后在論壇中詢問這種寫法。接下來就要引入一個概念,《可變函數》。
什么是可變函數?PHP 支持可變函數的概念。這意味著如果一個變量名后有圓括號,PHP 將尋找與變量的值同名的函數,并且嘗試執行它。
了解了這個概念以后那么上述程序就可以講的通了。$isPage 在程序運行中,替換為 get, 而 $isPage 后有一個圓括號,那么程序就會尋找同名函數。進而繼續執行。
示例:
"; } function bar($arg = "") { echo "In bar(); argument was "$arg".
"; } $func = "foo"; $func(); // 執行 foo(); 命令行中輸出:In foo()
$func = "bar"; $func("test"); // 執行 bar();命令行中輸出:In bar(); argument was "test".
可變函數的語法來調用一個對象的方法。
$name(); // This calls the Bar() method } function Bar() { echo "This is Bar"; } } $foo = new Foo(); $funcname = "Variable"; $foo->$funcname(); // This calls $foo->Variable() // 命令行執行輸出: This is Bar
當調用靜態方法時,函數調用要比靜態屬性優先。Variable 方法和靜態屬性示例。
Variable() reading $variable in this scope.
示例代碼來源 php 可變函數
轉載地址 lost in you
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28819.html
摘要:支持可變函數的概念。可變函數可以用來實現包括回調函數,函數表在內的一些用途。注意可變函數不能用于例如,,,,,,以及類似的語言結構。需要使用自己的包裝函數來將這些結構用作可變函數。可以用可變函數的語法來調用一個對象的方法。 php支持可變函數的概念。這意味著如果一個變量名后面有圓括號,php將尋找與變量的值同名的函數,并且嘗試運行它。可變函數可以用來實現包括回調函數,函數表在內的一些用...
摘要:的語法和其它流程控制結構相似部分允許設定代碼段的行為。返回值在失敗時返回并且發出警告。當一個函數是有條件被定義時,必須在調用函數之前定義。有條件的函數不能在此處調用函數,因為它還不存在,但可以調用函數。 流程控制 PHP 提供了一些流程控制的替代語法,包括 if,while,for,foreach 和 switch。替代語法的基本形式是把左花括號({)換成冒號(:),把右花括號(})分...
摘要:聲明靜態變量時不能用表達式的結果對其賦值正確錯誤使用表達式的結果賦值錯誤使用表達式的結果賦值靜態變量與遞歸函數靜態變量提供了一種處理遞歸函數的方法。 一、變量的定義 1. 變量的命名規則 變量名可以包含字母、數字、下劃線,不能以數字開頭。 $Var_1 = foo; // 合法 $var1 = foo; // 合法 $_var1 = foo; // 合法 $Var-1 = foo; /...
摘要:是用戶自定義函數中支持可變數量的參數列表。在及更早版本中,使用函數,,和。可變數量的參數列表,這個概念可能你會覺得很抽象。我們再看一個示例以上例程會輸出可變數量參數將被傳遞到中,給定的數組會作為參數變量。 最近在讀 Laravel 源碼的時候,發現了一個段特別有趣的代碼,大家請看: showImg(https://segmentfault.com/img/remote/14600000...
閱讀 2809·2021-10-08 10:04
閱讀 3198·2021-09-10 11:20
閱讀 524·2019-08-30 10:54
閱讀 3306·2019-08-29 17:25
閱讀 2302·2019-08-29 16:24
閱讀 885·2019-08-29 12:26
閱讀 1447·2019-08-23 18:35
閱讀 1931·2019-08-23 17:53