php的可變函數

來源:互聯網
上載者:User
這篇文章主要介紹了關於php的可變函數,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

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

樣本:
<?phpfunction 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 = 'Bar';        $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 方法和靜態屬性樣本。
<?phpclass Foo{    static $variable = 'static property';    static function Variable()    {        echo 'Method Variable called';    }}echo Foo::$variable; // This prints 'static property'. It does need a $variable in this scope.$variable = "Variable";Foo::$variable();  // This calls $foo->Variable() reading $variable in this scope.

以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.