本篇內(nèi)容主要講解“PHP的可變變量與可變函數(shù)的用法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“PHP的可變變量與可變函數(shù)的用法”吧!
成都創(chuàng)新互聯(lián)是工信部頒發(fā)資質(zhì)IDC服務(wù)器商,為用戶提供優(yōu)質(zhì)的服務(wù)器托管服務(wù)
什么叫可變。在程序世界中,可變的當(dāng)然是變量。常量在定義之后都是不可變的,在程序執(zhí)行過程中,這個常量都是不能修改的。但是變量卻不同,它們可以修改。那么可變變量和可變函數(shù)又是什么意思呢?很明顯,就是用另一個變量來定義他們,這個變量是可變的呀!
可變變量
$a = 'hello';
$$a = 'world';
echo $a, ' ', $hello;
咦,我們沒有定義$hello這個變量呀。嗯,從表面上看我們確實沒有定義這個變量,但請注意這個$$符號。$符號的意思就是定義變量,當(dāng)我們在一個$符號后面跟上一個已經(jīng)定義的變量名,那么這個變量的內(nèi)容就成為了新的變量名。也就是說,$a的內(nèi)容hello成為了一個新的變量名叫$hello,然后給它賦值為world。是不是感覺不太好理解,也不便于我們查看代碼,這個問題我們最后再說。
當(dāng)然,以下的用法要注意:
$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;
使用對象就不行了,直接就會報錯了,對象是不能進行可變變量的操作的。
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
可變函數(shù)
可變函數(shù)其實也大同小異,當(dāng)我們在一個變量的后面加上()時,PHP就會嘗試將這個變量當(dāng)做函數(shù)來解析。
function testA()
{
echo "testA";
}
$a = 'testA';
$a(); // testA
可變變量是將一個字符串轉(zhuǎn)換成了一個變量名,而可變函數(shù)則是將一個字符串當(dāng)做函數(shù)名來調(diào)用。比如類中的方法,我們可以這樣來調(diào)用:
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();
}
可變函數(shù)的這種特性和另外兩個系統(tǒng)函數(shù)的關(guān)系非常緊密,它們是:call_user_func()和call_user_func_array(),Laravel中服務(wù)容器的核心實現(xiàn)就是使用了call_user_func_array()來實現(xiàn)依賴注入與控制反轉(zhuǎn)的,這個等我們將來學(xué)習(xí)到的時候再說。
總結(jié)
看似很美好很靈活的可變變量與可變函數(shù)在我們實際的開發(fā)中卻很少使用。究其原因當(dāng)然是可讀性不好,代碼不僅是寫給機器的,也是寫給人看的,團隊中人員的水平不齊的話過多的使用這兩種特性會產(chǎn)生非常多的混亂情況。但是,很多框架代碼中會使用這些特性,所以,這也是我們向更高層次邁進所必須要掌握的東西。不管怎么樣,學(xué)就是了,能在業(yè)務(wù)場合中使用可變變量或者函數(shù)大大節(jié)約代碼量寫出精致易讀的代碼更能彰顯我們的技術(shù)實力。
測試代碼: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
參考鏈接:https://www.php.net/manual/zh/language.variables.variable.phphttps://www.php.net/manual/zh/functions.variable-functions.php
到此,相信大家對“PHP的可變變量與可變函數(shù)的用法”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
當(dāng)前題目:PHP的可變變量與可變函數(shù)的用法
網(wǎng)頁網(wǎng)址:http://aaarwkj.com/article12/ipdcdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計公司、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)