php單例模式

2022-07-23 22:24:16 字數 1656 閱讀 6048

【關鍵字】

1、final

① final修飾的類為最終類,不能被繼承!!

② final修飾的方法為最終方法,不能夠被重寫 

③ final不能修飾屬性!!

2、static

① 可以修飾屬性和方法稱為靜態屬性和靜態方法,也叫類屬性和類方法

static public $name;

static function func(){}

② 靜態屬性,靜態方法,只能使用類名呼叫

person::#name;person::func();

③ 靜態屬性和方法,在類第乙個裝載時宣告,會先於物件產生(成員屬性和方法在物件例項化時宣告)。

④ 在靜態方法中,不能呼叫非靜態屬性和方法;

在非靜態方法中,可以呼叫靜態屬性和方法;

(因為靜態屬性和方法在類裝載時宣告,此時還沒有物件,更沒有成員屬性

⑤ 在類中,可以使用self關鍵字代指本類宣告

class public{

static public $name;

function say(){

`echo self::$name;√

`echo person::$name;√

echo person::$name;

⑥ 靜態屬性是共享的。也就是new很多物件也是共用乙個屬性。

3、const

① 在類中,宣告常量不能使用define()函式,而且必須使用construction關鍵字!!

const count = "16億";

② const宣告的常量,依然要求必須全部大寫,而且不能使用$符號!!!

③ 常量一點宣告不能改變!!與static相同只能使用類名呼叫!!!

echo person::count;

4、instanceof 操作符

檢查乙個物件是否是乙個類的例項!!(包括父類,父類的父類。。。。。)

var_dump($s instanceof student);√

var_dump($s instanceof person);√

【小總結】幾種常用的操作符

1、 . 只能連線字串的作用。 "".""

2、 => 宣告陣列時,進行鍵值關聯。 ["key"=>"value"];

3、 -> 使用物件呼叫成員屬性和方法時  。$zhangsan -> name;  $this->name;

4、 :: ①使用類名呼叫靜態屬性和方法時。 person::$name;self::$name;

使用類名呼叫常量。 person::count;

②使用parent呼叫父類已有同名方法時。  parent::say();

[單例模式]

單例模式也叫單態模式,可以保證乙個類只能有乙個物件例項

實現思路:

① 建構函式私有化,不允許使用new關鍵字拿到例項化物件

② 所以需要對外提供乙個方法,在方法中,判斷記憶體是否已經有這個物件了,如果為空則建立乙個新物件返回,如果不為空則直接返回

③ 由於類外無法拿到物件,所以要呼叫方法必須使用類名。n那麼方法就必須是靜態方法

④ 由於方法是靜態方法,靜態方法中不能使用非靜態屬性,所以屬性必須是靜態屬性

⑤ 全部完成後,在類外面可以直接使用我們提供的靜態方法,獲得為一物件:

person::getsingle();

PHP單例模式

模式對於oop開發人員尤其有用,因為他有助於建立穩定的api,並且仍然保持一定的靈活度。一種模式可以幫助我們定義負責完成特定任務的物件,還可以允許我們全部修改掉某個類而不用修改與這些類打交道的 前者被稱為類的職責,後者被稱為類的多型性。單例模式被當作職責模式,他用來在應用程式中建立乙個單一的功能訪問...

php單例模式

單例模式 單例類 1 建構函式需要標記為private 訪問控制 防止外部 使用new操作符建立物件 單例類不能在其他類中例項化,只能被其自身例項化 2 擁有乙個儲存類的例項的靜態成員變數 3 擁有乙個訪問這個例項的公共的靜態方法 常用getinstance 方法進行例項化單例類,通過instanc...

php 單例模式

單例模式 身份證號碼 單例類identitycardno 身份證號碼類 class identitycardno public function getinstance else return self instance private function setidentitycardno no p...