php實作單例模式的方法:要實作單例模式需要保證一個類別只有一個實例,並提供一個存取它的全域存取點。單例模式不會建立實例副本,而是會向單例類別內部儲存的實例傳回一個參考。
單例模式的定義:
#(推薦教學:php教學)
保證一個類別只有一個實例,並提供一個存取它的全域存取點。它不會建立實例副本,而是會向單例類別內部儲存的實例傳回一個參考。
單例模式的三要素:
需要一個保存類別的唯一實例的靜態成員變數。
建構子和複製函式必須宣告為私有的,防止外部程式建立或複製實例副本。
必須提供一個存取這個實例的公共靜態方法,從而傳回唯一實例的一個參考。
程式碼實作:
class Singleton { //创建静态私有的变量保存该类对象 static private $instance; //防止使用new直接创建对象 private function __construct(){} //防止使用clone克隆对象 private function __clone(){} static public function getInstance() { //判断$instance是否是Singleton的对象,不是则创建 if (!self::$instance instanceof self) { self::$instance = new self(); } return self::$instance; } public function test() { echo "我是一个单例模式"; } } $sing = Singleton::getInstance(); $sing->test(); $sing2 = new Singleton(); //Fatal error: Uncaught Error: Call to private Singleton::__construct() from invalid context in $sing3 = clone $sing; //Fatal error: Uncaught Error: Call to private Singleton::__clone() from context
以上是php如何實作單例模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!