<?php
header("content-type:text/html;charset=utf-8");
class di
public function get($id)
}class user
function getusername()
}//從這裡開始看
$di = new di();
$di->set("zhangsan",function());
$di->set("lisi",function());
echo $di->get("zhangsan")->getusername();
echo $di->get("lisi")->getusername();
**中有乙個di容器用來儲存物件例項,然後通過set()方法註冊服務,通過get()方法獲取服務。
我們看到$di->set()的時候,使用了匿名函式,我們預先註冊了zhangsan和lisi兩個服務,這兩個服務都是user類的例項,在$di->set的時候實際上並沒有例項化,而是在$di->get()的時候才執行了匿名函式並將物件返回,這就實現了按需例項化,不用則不例項化,提高效率。
javascript閉包詳解
下面先看乙個例子,在不執行的情況下推測一下返回結果.function t1 return t2 var temp t1 var age 99 temp 在學習了作用域之後也許會分析結果是99,實際上是20.下面對其一一分析 在大部分語言中,t1被呼叫執行,則申請記憶體並把其區域性變數push入棧。t...
Scala閉包詳解
閉包是乙個函式,返回值依賴於宣告在函式外部的乙個或多個變數。閉包通常來講可以簡單的認為是可以訪問乙個函式裡面區域性變數的另外乙個函式。如下面這段匿名的函式 val multiplier i int i 10函式體內有乙個變數 i,它作為函式的乙個引數。如下面的另一段 val multiplier i...
Python 閉包詳解
一 python變數作用域問題 time 0 全域性變數 def insert time min time time min 區域性變數 return time print insert time 2 print insert time 10 unboundlocalerror local vari...