close
看了網路上幾個用PHP 實現單例模式的作法,我寫了一個比較簡單且通用的方式。
程式碼如下:
class _單例{
final protected function __construct(&$類別, &$參數){
$函數 = array($this, '_' . $類別);
if (is_callable($函數)) {
call_user_func_array($函數, $參數);
}
}
static function &實例($類別, $參數 = array()){
static $實例 = array();
$類別 = (string)$類別;
$輸出 = &$實例[$類別];
if(false == isset($輸出) || false == is_object($輸出)){
$輸出 = new $類別($類別, $參數);
}
return $輸出;
}
}
用法範例:
class 測試 extends _單例 implements __單例{
protected function _測試($數字, $字串){
echo (string)$數字, $字串, '<br>';
}
static function &實例(){
$參數 = func_get_args();
return parent::實例(get_class(), $參數);
}
}
$結果 = 測試::實例(5, 'years');
程式碼如下:
class _單例{
final protected function __construct(&$類別, &$參數){
$函數 = array($this, '_' . $類別);
if (is_callable($函數)) {
call_user_func_array($函數, $參數);
}
}
static function &實例($類別, $參數 = array()){
static $實例 = array();
$類別 = (string)$類別;
$輸出 = &$實例[$類別];
if(false == isset($輸出) || false == is_object($輸出)){
$輸出 = new $類別($類別, $參數);
}
return $輸出;
}
}
用法範例:
class 測試 extends _單例 implements __單例{
protected function _測試($數字, $字串){
echo (string)$數字, $字串, '<br>';
}
static function &實例(){
$參數 = func_get_args();
return parent::實例(get_class(), $參數);
}
}
$結果 = 測試::實例(5, 'years');
全站熱搜
留言列表