<?php * Class Singleton * 單例模式,也叫單子模式,是一種常用的軟件設計模式。在應用這個模式時,單例對象的類必須保證只有一個實例存在, * 充分體現(xiàn)了 DRY(Don't Repeat Yourself)的思想。 * * 實現(xiàn)單例模式的思路是:一個類能返回對象一個引用(永遠是同一個)和一個獲得該實例的方法(必須是靜態(tài)方法,通常使用getInstance這個名稱); * 當我們調用這個方法時,如果類持有的引用不為空就返回這個引用,如果類保持的引用為空就創(chuàng)建該類的實例并將實例的引用賦予該類保持的引用; * 同時我們還將該類的構造函數(shù)定義為私有方法,這樣其他處的代碼就無法通過調用該類的構造函數(shù)來實例化該類的對象,只有通過該類提供的靜態(tài)方法來得到該類的唯一實例。 * * 應用場景:適用于一個類只有一個實例的場景。數(shù)據(jù)庫連接,日志記錄,購物車 * 缺點:PHP運行是頁面級別的,無法直接實現(xiàn)跨頁面的內存數(shù)據(jù)共享。 */ class Singleton { //保存類實例的私有的靜態(tài)成員變量 private static $_instance; //私有的構造方法 private function __construct() { echo 'This is a Constructed method;'; } //創(chuàng)建一個空的私有__clone方法防止對象被克隆 private function __clone() { } //單例方法,用于獲取唯一的實例對象 public static function getInstance() { if (!(self::$_instance instanceof self)) { //instanceof用于檢測對象與類的從屬關系,is_subclass_of對象所屬類是否類的子類 self::$_instance = new self(); } return self::$_instance; } //測試 public function test() { echo 123; } } $a = Singleton::getInstance(); $a->test(); echo PHP_EOL; $b = Singleton::getInstance(); //第二次調用時不執(zhí)行構造方法 $b->test(); echo PHP_EOL; //$c=new Singleton();由于構造方法私有,這個會報錯的 //$d=clone $a;克隆對象報錯
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas
Panduan Membina Rumput Wonder | Uma Musume Pretty Derby
1 bulan yang lalu
By Jack chen
<??>: 99 Malam di Hutan - Semua Lencana Dan Cara Membuka Kunci Mereka
4 minggu yang lalu
By DDD
Jadual Banner Pretty Derby Uma Musume (Julai 2025)
1 bulan yang lalu
By Jack chen
Panduan Suhu Rimworld Odyssey untuk Kapal dan Gravtech
3 minggu yang lalu
By Jack chen
Keselamatan Windows kosong atau tidak menunjukkan pilihan
1 bulan yang lalu
By 下次還敢

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)