




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋼花管錨桿施工方案
- 河流清淤施工方案
- 倉儲服務對象合同范例
- l勞務掛靠合同范例
- 醫(yī)護陪護合同范本
- 城市煤氣知識培訓課件
- 倉庫管理中的最佳行為準則計劃
- 教學設備與技術支持計劃
- 數(shù)字化轉型的戰(zhàn)略規(guī)劃計劃
- 《貴州黎明能源集團有限責任公司金沙縣新化鄉(xiāng)新華煤礦(變更)礦產資源綠色開發(fā)利用方案(三合一)》評審意見
- W公司加氫站安全管理問題
- 1.醫(yī)院總院醫(yī)藥代表接待管理制度(詳細版)
- 安全風險分級管控與-隱患排查治理雙重預防制度
- 老年人權益保障法講座
- pcb板銅箔厚度公差標準
- 阿斯伯格綜合征兒童上學與社交技能訓練
- 23J916-1:住宅排氣道(一)
- 制藥工程GMP(設備驗證)
- 亞洲的人文環(huán)境
- 初中物理之魔術物理課件
- 投用前安全檢查表
評論
0/150
提交評論