最近專案中遇到這樣一個case,感覺所有的Model類別都須是單例效能更高.因為所有的model皆繼承統一父類別BaseModel,所以在BaseModel中加入控制單例的程式碼,簡單示範如下:
Java代碼
/*基類*/
class BaseModel
{
public static function instance() { empty(self::$instance)) { self::
return self::$instance;
}
} 各個邏輯子類別Model
Java代碼 /*商品類別*/ class GoodModel extends return array(
Java程式碼
object(BaseModel)#1 (0) {
}
非需要的GoodModelselfs
繼承變數被重寫呼叫父類別裡的函數self::呼叫的變數還是輸出父類別的變數值而不會輸出被重寫的值所以需要採用static關鍵字延遲靜態綁定,static代表了子類
程式碼如下Java代碼
/*基類*/
class BaseModel
= null; public static function instance()
if (empty(self::$instance)) {
}
return self
這時的$good 即為Java碼
object(GoodModel)#1 (0) {
}
Java代碼 class BaseModel { private static ic function instance() {
$className = get_called_class();
}
return self::$instance;
}
}