中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP的可變變量與可變函數是什么

發布時間:2021-02-20 16:18:36 來源:億速云 閱讀:174 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關PHP的可變變量與可變函數是什么的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

什么叫可變。在程序世界中,可變的當然是變量。常量在定義之后都是不可變的,在程序執行過程中,這個常量都是不能修改的。但是變量卻不同,它們可以修改。那么可變變量和可變函數又是什么意思呢?很明顯,就是用另一個變量來定義他們,這個變量是可變的呀!

可變變量
$a = 'hello';

$$a = 'world';

echo $a, ' ', $hello;

咦,我們沒有定義\$hello這個變量呀。嗯,從表面上看我們確實沒有定義這個變量,但請注意這個$$符號。$符號的意思就是定義變量,當我們在一個$符號后面跟上一個已經定義的變量名,那么這個變量的內容就成為了新的變量名。也就是說,$a的內容hello成為了一個新的變量名叫$hello,然后給它賦值為world。是不是感覺不太好理解,也不便于我們查看代碼,這個問題我們最后再說。

當然,以下的用法要注意:

$a = 1;
$$a = 2;

echo $1; // Parse error: syntax error, unexpected '1'
echo ${1}; // ok

$a = ['b', 'c', 'd'];
$$a = 'f';

echo $b, $c, $d;
  • 數字類型不是合法的變量名,不能作為可變變量被定義

  • 但是利用{},是可以輸出的,{}會獲取{}內部的值并作為一個變量來解析,這里的{1}我們利用可變變量賦值成為了一個變量,直接輸出是非常的,但放在{1}中就成為了一個可解析的變量名,我們可以簡單的理解為{1}轉換成了$'1',成為了一個正式的變量名

  • 數組當然是不行啦

  • 它們這樣寫都是不會報錯的

使用對象就不行了,直接就會報錯了,對象是不能進行可變變量的操作的。

class A {}
class B extends A {}

$a = new A();
$$a = new B(); // Catchable fatal error: Object of class A could not be converted to string
可變函數

可變函數其實也大同小異,當我們在一個變量的后面加上()時,PHP就會嘗試將這個變量當做函數來解析。

function testA()
{
    echo "testA";
}

$a = 'testA';
$a(); // testA

可變變量是將一個字符串轉換成了一個變量名,而可變函數則是將一個字符串當做函數名來調用。比如類中的方法,我們可以這樣來調用:

class C
{
    public function testA()
    {
        echo "C:testA";
    }
    public function testB()
    {
        echo "C:testB";
    }
    public function testC()
    {
        echo "C:testC";
    }
}

$funcs = ['testA', 'testB', 'testC'];

$c = new C();
foreach ($funcs as $func) {
    $c->$func();
}

可變函數的這種特性和另外兩個系統函數的關系非常緊密,它們是:call_user_func()和call_user_func_array(),Laravel中服務容器的核心實現就是使用了call_user_func_array()來實現依賴注入與控制反轉的,這個等我們將來學習到的時候再說。

總結

看似很美好很靈活的可變變量與可變函數在我們實際的開發中卻很少使用。究其原因當然是可讀性不好,代碼不僅是寫給機器的,也是寫給人看的,團隊中人員的水平不齊的話過多的使用這兩種特性會產生非常多的混亂情況。但是,很多框架代碼中會使用這些特性,所以,這也是我們向更高層次邁進所必須要掌握的東西。不管怎么樣,學就是了,能在業務場合中使用可變變量或者函數大大節約代碼量寫出精致易讀的代碼更能彰顯我們的技術實力。

測試代碼:
https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/source/PHP%E7%9A%84%E5%8F%AF%E5%8F%98%E5%8F%98%E9%87%8F%E4%B8%8E%E5%8F%AF%E5%8F%98%E5%87%BD%E6%95%B0.php

感謝各位的閱讀!關于“PHP的可變變量與可變函數是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

孝义市| 阜宁县| 定陶县| 渝中区| 教育| 巩留县| 平潭县| 眉山市| 汕头市| 民丰县| 图木舒克市| 临潭县| 衡南县| 哈尔滨市| 扶沟县| 错那县| 清河县| 固始县| 澄迈县| 舒城县| 乌海市| 深圳市| 炎陵县| 当阳市| 昭苏县| 聂拉木县| 芮城县| 上虞市| 寿宁县| 庆安县| 寿阳县| 普洱| 涪陵区| 阜新市| 台北县| 镇康县| 黄冈市| 河北省| 淮滨县| 和平县| 航空|