phpfunctionuse使用,PHP閉包function()use()中的詳細使用方法_第1頁
phpfunctionuse使用,PHP閉包function()use()中的詳細使用方法_第2頁
phpfunctionuse使用,PHP閉包function()use()中的詳細使用方法_第3頁
phpfunctionuse使用,PHP閉包function()use()中的詳細使用方法_第4頁
phpfunctionuse使用,PHP閉包function()use()中的詳細使用方法_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

phpfunctionuse使?,PHP閉包function()use()中的詳細使??法php的閉包(Closure)也就是匿名函數(shù)。是PHP5.3引?的。閉包的語法很簡單,需要注意的關鍵字就只有use,use意思是連接閉包和外界變量。123[php]viewplaincopy$a=function()use($b){}閉包的?個作?:1減少foreach的循環(huán)的代碼1234567891011121314151617192021222324252627282930313233343536373839404142[php]viewplaincopy//?個基本的購物車,包括?些已經添加的商品和每種商品的數(shù)量。//其中有?個?法?來計算購物車中所有商品的總價格。該?法使?了?個closure作為回調函數(shù)。classCart{constPRICE_BUTTER=1.00;constPRICE_MILK=3.00;constPRICE_EGGS=6.95;protected$products=array();publicfunctionadd($product,$quantity)$this->products[$product]=$quantity;}publicfunctiongetQuantity($product){returnisset($this->products[$product])?$this->products[$product]:FALSE;}publicfunctiongetTotal($tax){$total=0.00;$callback=function($quantity,$product)use($tax,&$total){$pricePerItem=constant(CLASS."::PRICE_".strtoupper($product));$total+=($pricePerItem*$quantity)*($tax+1.0);};array_walk($this->products,$callback);returnround($total,2);;}}$my_cart=newCart;//往購物車?添加條?$my_cart->add('butter',1);$my_cart->add('milk',3);$my_cart->add('eggs',6);//打出出總價格,其中有5%的銷售稅.print$my_cart->getTotal(0.05)."\n";//Theresultis54.29>這?如果我們改造getTotal函數(shù)必然要使?到foreach12356789[php]viewplaincopyfunctionhtml($code,$id="",$class=""){if($id!=="")$id="id=\"$id\"";$class=($class!=="")?"class=\"$class\"":">";$open="$close="$code>";returnfunction($inner="")use($open,$close){return"$open$inner$close";};}如果是使?平時的?法,我們會把inner放到html函數(shù)參數(shù)中,這樣不管是代碼閱讀還是使?都不如使?閉包3解除遞歸函數(shù)12345678910[php]viewplaincopy$fib=function($n)use(&$fib){if($n==0||$n==1)return1;return$fib($n-1)+$fib($n-2);};echo$fib(2)."\n";//2$lie=$fib;$fib=function(){die('error');};//rewrite$fibvariableecho$lie(5);//errorbecause$fibisreferencedbyclosure注意上題中的use使?了&,這?不使?&會出現(xiàn)錯誤n-1)是找不到function的(前?沒有定義fib的類型)所以想使?閉包解除循環(huán)函數(shù)的時候就需要使?12345[php]viewplaincopy$recursive=function()use(&$recursive){//Thefunctionisnowavailableas$recursive}這樣的形式4關于延遲綁定如果你需要延遲綁定use??的變量,你就需要使?引?,否則在定義的時候就會做?份拷貝放到use中12345678910111213[php]viewplaincopy$result=0;$one=function(){var_dump($result);};$two=function()use($result){var_dump($result);};$three=function()use(&$result){var_dump($result);};$result++;$one();//outputsNULL:$resultisnotinscope$two();//outputsint(0):$resultwascopied$three();//o

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論