導航:首頁 > 編程語言 > php匿名函數use

php匿名函數use

發布時間:2023-06-14 06:23:05

php 問題 unexpected T_FUNCTION

整理了一下格式,代碼沒有問題,三次輸出中第一個和第三個都能正常顯示,第二個會提示全局變數里沒有index v1,因為你的$v1是定義在function裡面的,所以提示沒有也是正確的。

如果還報錯就檢查一下各種括弧的匹配對不對,還不行就報一下PHP版本

functionfunc1(){
$v1=10;
$v2=20;
$func2=function()use($v1,&$v2){
$v1++;
$v2--;
var_mp($v1,$v2);
//11,19
var_mp($GLOBALS['v1']);
};
$func2();

var_mp($v1,$v2);
//10,19
}

② php匿名函數中的use有什麼用

php文檔中關於use的說明

所有支持命名空間的PHP版本支持三種別名或導入方式:為類名稱使用別名、為介面使用別名或為命名空間名稱使用別名。PHP5.6開始允許導入函數或常量或者為它們設置別名。
在PHP中,別名是通過操作符use來實現的.下面是一個使用所有可能的五種導入方式的例子:
Example#1使用use操作符導入/使用別名
<?php
namespacefoo;
useMyFullClassnameasAnother;

//下面的例子與useMyFullNSnameasNSname相同
useMyFullNSname;

//導入一個全局類
useArrayObject;

//importingafunction(PHP5.6+)
usefunctionMyFullfunctionName;

//aliasingafunction(PHP5.6+)
;

//importingaconstant(PHP5.6+)
useconstMyFullCONSTANT;

$obj=newnamespaceAnother;//實例化fooAnother對象
$obj=newAnother;//實例化MyFullClassname對象
NSnamesubnsfunc();//調用函數MyFullNSnamesubnsfunc
$a=newArrayObject(array(1));//實例化ArrayObject對象
//如果不使用"useArrayObject",則實例化一個fooArrayObject對象
func();//
echoCONSTANT;//
?>

③ PHP的幾種函數參數類型及一些特殊函數

給你整理如下:

$array = func_get_args();

$count = func_num_args();

$value = func_get_arg();

④ PHP匿名函數怎麼使用

這里的use實際上就是將全局的$message拷貝到局部函數中,所以很類似於global,不過和global不同的是:
use時:當你在函數中對$message更改的時候不會影響到全局的那個$message,也就是說使用use實際上是拷貝一份變數到函數中。
global時:正相反,在函數中對$message更改的時候會影響到全局的那個$message。我在後盾人視頻平台才看見教師講這個,沒想到就能幫到你,呵呵太有趣了

⑤ php的匿名函數怎麼訪問外部變數

使用create_function()創建"匿名"函數
前面提到PHP5.3中才才開始正式支持匿名函數,說到這里可能會有細心讀者有意見了,因為有個函數是可以生成匿名函數的: create_function函數,在手冊里可以查到這個函數在PHP4.1和PHP5中就有了,這個函數通常也能作為匿名回調函數使用,例如如下:

<?php

$array = array(1, 2, 3, 4);
array_walk($array, create_function('$value', 'echo $value'));

這段代碼只是將數組中的值依次輸出,當然也能做更多的事情。 那為什麼這不算真正腔御備的匿名函數呢,我們先看看這個函數的返回值,這個函數返回一個字元串,通常我們可以像下面這樣調用一個函數:

<?php

function a() {
echo 'function a';
}

$a = 'a';
$a();

我們在實現回調函數的時候也可以採用這樣的方式,例如:

<?php

function do_something($callback) {
// doing
# ...

// done
$callback();
}

這樣就能實現在函數do_something()執行完成之後調用$callback指定的函數。回到create_function函數的返回值:函數返回一個唯一的字元串拆敗函數名,出現錯誤的話則返回FALSE。這么說這個伍毀函數也只是動態的創建了一個函數,而這個函數是有函數名的,也就是說,其實這並不是匿名的。只是創建了一個全局唯一的函數而已。

⑥ PHP到底有多糟糕

php是web開發第一語言,這已經是坐穩了的事實,因為使用簡單,工具完善,開發效率高等優點為它積聚了大量的粉絲,號稱世界上最好的語言。 然而,就算是世界上最好的語言也有缺陷,下面我挑幾個php語法層面不那麼好用的特性吐槽下。

變數面前的美元($)符號

我想不明白當初php語言的設計師是怎麼想的,為什麼非要在變數名面前加上這個美元符號?每次我書寫變數時必須要按一下shift +4鍵,用其它語言可以很流暢的寫代碼,在php中卻老是被按這個shift打斷整個過程,這除了能給程序員帶來麻煩,我實在看不到有其它一丁點的好處。網上流傳著的說法好像是因為帶美元符號代碼解析起來更容易, 性能更好。但是解釋類型的語言又不只有php ,為什麼其它語言就不用讓程序員打這個討厭的美元符號。每天看著滿屏的美元符號,我口袋裡的錢也沒見多一分呀。

訪問對象成員要使用箭頭符號

明明按一下點號(.)就可以方便快捷的搞定的問題,卻非要使用簡單符號(->)來代替,真的是借我一百個腦袋也想不明白php設計者在設計這個特性是什麼邏輯。難不成是因為php解釋器最終會把php的代碼轉換成c代碼執行,而c中訪問指針的成員就是使用箭頭符號的。如果是這樣那顯然是php的設計者們偷懶了,難到不能在轉換成c執行的過程中多一步將點號轉換為箭頭符號的過程嗎?不要告訴我又是因為性能問題而辦不到,他們就不能為程序員想想?

數組即能當列表也能當字典

寫一個函數,返回一個數組類型,但是在函數的外面,鬼知道這個數組是一個list還是一個map?寫php代碼不知道被這個特性坑過多少回,如果是別人寫的函數, 又沒有注釋,那非得跑進函數里看個明白才知道應該這么樣使用這個函數才是安全的。難到就不能把array拆成兩個獨立的類型分別代表list(列表)和map(字典)嗎?這能為程序提供很大的便利,寫的代碼也更加不會出錯。

匿名函數使用外部變數必須使用use關鍵字導入

這個特性不能說完全沒有優點,對於代碼的可維護性還是能起到正面的作用的,因為這么做能讓我知道我在匿名函數體裡面對於外部會有哪些依賴,讓代碼更可控。然而,這種寫法真的是非常的不方便,每次寫lambda時,要用到外部的變數時,都要使用use導入,把代碼搞的看起來很臃腫,而且,因為其它語言沒這個限制,習慣已經養成,所以每次都會忘記使用use導入,導致代碼出錯,增加排查問題的時間,這真的不是什麼好玩的事。

用include導入文件

當把代碼模塊化時,然後在其它文件中使用,每次都需要使用這個include把文件導入進來,而且還要考慮路徑的問題,在結構復雜的項目中,非常讓人蛋疼。而像Java和Python之類的語言中,代碼管理機制設計的非常好,想用什麼import進來就可以了,根本不用考慮路徑啊,文件名大小寫啊之類的問題,能大大的提升開發效率。雖然,有框架可以解決這類問題,但畢竟是外部實現,使用起來總歸不是那麼順暢。這也算是php一個比較大的毛病了。

總結的這五點算是php中存在問題的典範了,希望php團隊能加把勁,把這些問題在未來的版本中優化掉,讓開發者寫代碼時有更好的體驗,更高的效率,讓世界上最好的語言名副其實

⑦ PHP關於Use用法的疑問

子類B不可以直接使用類C的方法。需要Use類C後,才可以使用類C的方法。
use是你在當前文件需要引用哪個類時,在當前文件的代碼前面聲明——如果當前文件有聲明namespace,則放在namespace之後。

⑧ PHP沒有函數名的函數什麼時候需要用到呢

沒有函數名的函數也就是匿名函數,通常在定義後就立即使用,比如當某個函數要求參數也是函數時,就可以用一個匿名函數傳遞進去,然後那個函數就會立刻調用它了,比如
//這段代碼用於過濾數組,篩選數組中的所有偶數:
$a1=array(1,2,3,4,5,6,7,8,9);
$a2=array_filter($a1,function($v){
return$v%2==0;
});
print_r($a2);

也可以把匿名函數賦值給一個變數,以後調用這個變數就相當於執行了這個函數:

$f=function($x,$y){
return$x+$y;
};
echo$f(1,2);
閱讀全文

與php匿名函數use相關的資料

熱點內容
如何看漫威漫畫app 瀏覽:789
安卓手機如何按拼音排布app 瀏覽:721
java中exceptionin 瀏覽:882
java131 瀏覽:868
學英語不登錄的app哪個最好 瀏覽:299
安卓的後台運行怎麼設置 瀏覽:135
如何撰寫論文摘要以及編譯sci 瀏覽:416
安卓如何使用推特貼吧 瀏覽:429
怎樣避免程序員入獄 瀏覽:856
蘋果方塊消除安卓叫什麼 瀏覽:535
安卓世界征服者2怎麼聯機 瀏覽:297
國企招的程序員 瀏覽:969
哪個app可以看watch 瀏覽:518
dns備用什麼伺服器 瀏覽:1002
中達優控觸摸屏編譯失敗 瀏覽:80
上海科納壓縮機 瀏覽:680
python工時系統 瀏覽:551
查好友ip命令 瀏覽:118
通達信python量化交易 瀏覽:506
cnc編程工程師自我評價 瀏覽:132