導航:首頁 > 編程語言 > 單例模式php

單例模式php

發布時間:2022-01-17 18:10:22

php如何實現單例模式

類的單例模式:
class Single
{
public $rand;
static public $ob;
protected function __construct(){
$this->rand = mt_rand(1000, 99999);
}

static public function getIns(){
if(!Single::$ob){
Single::$ob = new Single();
}
return Single::$ob;
}
}
v(Single::getIns());
v(Single::getIns());

㈡ 單例模式 資料庫 php 怎麼用

搭建好php開發環境,這個就不多講了,能找單例模式的應該有一定的php基礎
2
新建一個database.php文件存放資料庫信息
<?php
$db = array(
'host'=>'localhost',//地址
'user'=>'root',//資料庫用戶名
'password'=>'root',//資料庫密碼
'database'=>'ceshi',//資料庫名
)
?>
3
新建Mysql.class.php編寫資料庫連接類操作類添加需要的屬性和構造方法
構造函數載入資料庫配置文件連接資料庫
<?php
class db {
public $conn;
public static $sql;
public static $instance=null;
private function __construct(){
require_once('database.php');
$this->conn = mysqli_connect($db['host'],$db['user'],$db['password']);
if(!mysqli_select_db($this->conn,$db['database'])){
echo "失敗";
};
mysqli_query($this->conn,'set names utf8');
}

}
?>這樣試試吧如果你對php這類有興趣的話,可以和我一樣在後盾人經常看看教材,自己多看幾遍,慢慢的以後就明白了,希望能幫到你,給個採納吧謝謝

㈢ php設計模式中工廠模式和單例模式的區別

工廠模式使用時,返回的對象之間沒有關系。單例模式返回始終是同一個對象。可以在代碼的定義明顯的區分出來,單例模式的構造函數 一般是私有的,不允許實例化,通過內部靜態方法實例化自己,同類型的對象始終返回同一個。

㈣ PHP為什麼以及什麼時候使用單例模式

單例模式確保某個類只有一個實例
1.只能有一個實例。
2.必須自行創建這個實例。
3.必須給其他對象提供這一實例。
那麼為什麼要使用PHP單例模式?
PHP一個主要應用場合就是應用程序與資料庫打交道的場景,在一個應用中會存在大量的資料庫操作,針對資料庫句柄連接資料庫的行為,使用單例模式可以避免大量的new操作。因為每一次new操作都會消耗系統和內存的資源。
優點:
1. 改進系統的設計
2. 是對全局變數的一種改進
缺點:
1. 難於調試
2. 隱藏的依賴關系
3. 無法用錯誤類型的數據覆寫一個單例

㈤ PHP設計模式之單例模式

單例模式
:使得類的一個對象成為系統中的唯一實例.
PHP中使用單例模式最常見的就是資料庫操作了。避免在系統中有多個連接資料庫的操作,浪費系統資源的現象,就可以使用單例模式。每次對資料庫操作都使用一個實例。
簡單示例
class
AClass
{
//
用來存儲自己實例
public
static
$instance;
//
私有化構造函數,防止外界實例化對象
private
function
__construct()
{}
//
私有化克隆函數,防止外界克隆對象
private
function
__clone()
{}
//
靜態方法,單例訪問統一入口
public
static
function
getInstance()
{
if
(!(self::$instance
instanceof
self)){
self::$instance
=
new
self();
}
return
self::$instance;
}
//
test
public
function
test()
{
return
"done";
}
//
私有化克隆函數,防止外界克隆對象
private
function
__clone()
{}
}
class
BClass
extends
AClass{
}
//
獲取實例
$aclass
=
AClass::getInstance();
$bclass
=
BClass::getInstance();
//
調用方法
echo
$aclass->test();
對一些比較大型的應用來說,可能連接多個資料庫,那麼不同的資料庫公用一個對象可能會產生問題,比如連接句柄的分配等,我們可以通過給$instance變成數組,通過不同的參數來控制
簡單示例
class
DB
{
//
用來存儲自己實例
public
static
$instance
=
array();
public
$conn;
//
私有化構造函數,防止外界實例化對象
private
function
__construct($host,
$username,
$password,
$dbname,
$port)
{
$this->conn
=
new
mysqli($host,
$username,
$password,
$dbname,
$port);
}
//
靜態方法,單例訪問統一入口
public
static
function
getInstance($host,
$username,
$password,
$dbname,
$port)
{
$key
=
$host.":".$port;
if
(!(self::$instance[$key]
instanceof
self)){
self::$instance[$key]
=
new
self($host,
$username,
$password,
$dbname,
$port);#實例化
}
return
self::$instance[$key];
}
//query
public
function
query($ql)
{
return
$this->conn->query($sql);
}
//
私有化克隆函數,防止外界克隆對象
private
function
__clone()
{}
//釋放資源
public
function
__destruct(){
$this->conn->close();
}

}

㈥ php單例模式是怎麼實現的呢

單例模式是一種常用的軟體設計模式。在它的核心結構中只包含一個被稱為單例類的特殊類。

㈦ 怎麼用php實現單例模式

類內使用方法,類似

public static function getInstance($class_name){
if(! isset(static::$classList[$class_name])){
static::$classList[$class_name] = new $class_name;
}

return static::$classList[$class_name];
}
實例化

(className)::getInstance($class_name);

㈧ php 單例模式

單例模式是一種常用的軟體設計模式,可以保證系統中一個類只有一個實例,從而達到節約系統資源提升特殊類使用效率的目的


php實現單例模式的方法

classA{
//靜態屬性
privatestatic$_instance;

//空的克隆方法,防止被克隆
privatefunction__clone(){}

//獲取實例
(){
if(!(self::$_instanceinstanceofself)){
self::$_instance=newA();
}
returnself::$_instance;
}
}

//調用
$obj=A::getInstance();

㈨ 在PHP中單態模式和單例模式的區別是什麼我弄不清楚是不是同一種模式

單例模式是一種常用的軟體設計模式。在它的核心結構中只包含一個被稱為單例類的特殊類。通過單例模式可以保證系統中一個類只有一個實例而且該實例易於外界訪問,從而方便對實例個數的控制並節約系統資源。如果希望在系統中某個類的對象只能存在...

閱讀全文

與單例模式php相關的資料

熱點內容
android系統運行動態編譯的程序 瀏覽:415
計算編程中常用的if語句是 瀏覽:732
linux文件夾許可權亂了 瀏覽:907
程序員職業病預防保健操 瀏覽:676
c程序修改後需不需要重新編譯 瀏覽:721
怎樣把圖片分別放置在文件夾中 瀏覽:871
推流伺服器地址是什麼 瀏覽:630
java允許多重繼承 瀏覽:511
解壓小玩具好玩又可愛 瀏覽:408
騰訊雲大帶寬伺服器 瀏覽:821
加密鎖的售後 瀏覽:268
linux登不上去 瀏覽:729
聯想伺服器休眠後如何喚醒 瀏覽:111
四川話女孩學習編程 瀏覽:322
編譯原理文法區分 瀏覽:1001
教師可以做程序員嘛 瀏覽:637
終結戰場安卓國際服怎麼下載 瀏覽:155
現在的高端伺服器屬於什麼 瀏覽:810
企業銀行解壓流程 瀏覽:447
用app壓縮文件 瀏覽:227