首頁  >  文章  >  後端開發  >  php中可變函數的使用總結

php中可變函數的使用總結

不言
不言原創
2018-06-12 16:25:561543瀏覽

PHP 支援可變函數的概念。這意味著如果一個變數名後面有圓括號,PHP 將尋找與變數的值同名的函數,並且嘗試執行它。本文重點介紹php 可變函數使用小結,有興趣的朋友一起看看吧

可變函數

##PHP 支持可變函數的概念。這意味著如果一個變數名後面有圓括號,PHP 將尋找與變數的值同名的函數,並且嘗試執行它。可變函數可以用來實現包括回調函數,函數表在內的一些用途。

變數函數不能用於語言結構,例如 echo(),print(),unset(),isset(),empty(),include(),require() 以及類似的語句。需要使用自己的包裝函數來將這些結構用作變數函數。

先將我的偽代碼寫上。

 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 後面有一個圓括號,那麼程式就會尋找同名函數。進而繼續執行。

範例:

<?php
function foo() {
 echo "In foo()<br />\n";
}
function bar($arg = '') {
 echo "In bar(); argument was '$arg'.<br />\n";
}
$func = 'foo';
$func();  // 执行 foo(); 命令行中输出:In foo()<br />
$func = 'bar';
$func('test'); // 执行 bar();命令行中输出:In bar(); argument was 'test'.<br />

可變函數的語法來呼叫一個物件的方法。

<?phpclass Foo
{
 function Variable()
 {
  $name = &#39;Bar&#39;;
  $this->$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 方法和靜態屬性範例。

<?php
class Foo
{
 static $variable = &#39;static property&#39;;
 static function Variable()
 {
  echo &#39;Method Variable called&#39;;
 }
}
echo Foo::$variable; // This prints &#39;static property&#39;. It does need a $variable in this scope.
$variable = "Variable";
Foo::$variable(); // This calls $foo->Variable() reading $variable in this scope.

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

關於PHP字串中的速查表總結

三種php遞歸函數的實現方法及實作數字的累加

#

以上是php中可變函數的使用總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn