程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> php class singleton 單件模式 概述

php class singleton 單件模式 概述

編輯:PHP基礎知識
 

<?php
/**
*@name singleton.php
*@desc 單件模式
*/

//單件模式是我們在開發中經常用到的一種設計模式,利用PHP5面向對象的特性,
//我們可以很容易的構建單件模式的應用,下面是單件模式在PHP中的幾種實現方法
class Stat{
static $instance = NULL;

static function getInstance(){
if(self::$instance == NULL){
self::$instance = new Stat();
}

return self::$instance;
}

private function __construct(){
}

private function __clone(){
}

function sayHi(){
return "The Class is saying hi to u ";
}
}

echo Stat::getInstance()->sayHi();

//這是一種最通常的方式,在一個getInstance方法中返回唯一的類實例。
//對這裡例子稍加修改,便可以產生一個通用的方法,
//只要叫道任何你想用到單件的類裡,就可以了。

class Teacher{
function sayHi(){
return "The teacher smiling and said 'Hello '";
}

static function getInstance(){
static $instance;

if(!isset($instance)){
$c = __CLASS__;
$instance = new $c;
}

return $instance;
}
}

echo Teacher::getInstance()->sayHi();

//最後一種是提供一個singleton類,然後通過調用getInstance方法,
//可以為任何一個類生產出一個實例來。
class singleton{
function getInstance($class){
static $instances = array();
if(!array_key_exists($class,$instances)){
$instances[$class] = &new $class;
}
$instance = $instances[$class];

return $instance;
}
}
class People{
function sayHi(){
return 'Hello i am a people?';
}
}

echo "<br />";
echo singleton::getInstance('People')->sayHi();

//通過這三種方法,我們可以很容易的應用單件模式,
//如果能夠結合工廠模式,將使我們的編程變得更有條理和效率。

//示例:
class test_class{
function test_class(){
/******code******/
}

function test(){
/******code******/
}

function &getInstance(){
static $instance = null;
if(is_null($instance)){
$instance = new test_class();
}
return $instance;
}
}
$test_class =& test_class::getInstance();

?>
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved