PHP 物件導向程式設計 常見的關鍵字

2021-09-24 13:41:27 字數 2942 閱讀 3562

目的:一是為了安全,二是沒必要被繼承或重寫

例項:demo.class.php

<?php

// final關鍵字修飾的類,是最終的類不能被繼承

final

class

demo

}class

demo1

extends

demo

}// $d1 = new demo1(); // 報錯

// $d1 -> say(); // 報錯

# 格式

類::$靜態屬性

類::靜態方法

# 格式

self::$靜態屬性

self::靜態方法

靜態屬性是共享的。也就是 new 很多物件,很多物件都可以訪問這個靜態屬性。

例項:demo.class.php

<?php

class

demo

// static 如果修飾成員方法。這個方法就是靜態的成員方法

static

public

function

say()}

echo demo:

:$name

;// 在類的外部訪問靜態的成員屬性。類名::成員屬性名

echo demo:

:say()

;// 在類的外部訪問靜態的成員方法。類名::成員方法名

$d1=

newdemo()

;echo""

;echo demo:

:$num

;// 輸出1

$d2=

newdemo()

;echo""

;echo demo:

:$num

;// 輸出2

# 用靜態成員屬性和靜態成員方法實現單例設計模式(只能有乙個物件)

# 注釋操作步驟

# 讓類不能外部例項化,把構造方法設定成私有(private)

# 宣告乙個靜態(static)的 getobj() 的方法,它可以不需要物件就可以從類的外部訪問。

# 宣告這個方法的目的就是為了得到物件,怎麼得到呢,new db()。

# 接下去 var_dump(db::getobj()),你會發現一樣例項化成功了,構造方法已經執行,列印出了乙個物件

# 然而再 var_dump(db::getobj()),構造方法又執行了一次,證明了還是例項化了兩次,不符合需求。

# 說明例項化的過程要有選擇的例項化,用 if 來控制一下。

# 判斷一下沒有例項化的時候,就例項化一次,如果已經例項化,就直接返回例項化的結果。

# 設定乙個靜態(static)的成員屬性 $obj = null

# 在 getobj() 裡判斷靜態的成員屬性($obj)為空的話,就例項化結果(new db()),並賦給靜態成員屬性 $obj

# 因為靜態屬性只能初始化一次這個特性,第二次再呼叫 getobj() 的時候,$obj 的值就已經是物件了,物件直接返回就行。

# 此時會發現構造方法就只執行了一次,返回物件兩次。

# 證明了不管呼叫多少次,例項化的過程只有一次,保證這個程式只有乙個物件產生,這就是單例設計模式。

<?php

class

db// 靜態的成員方法可以不需要物件就可以直接訪問。這個方法用於得到物件

static

function

getobj()

// 把靜態成員屬性中的物件返回

return self:

:$obj;}

public

function

select()

}var_dump(db

::getobj()

);var_dump(db

::getobj()

);var_dump(db

::getobj()

);

# 語法

# 不需要例項化物件即可獲取

const constant = 『constant value』; //定義

echo self::constant; //類內部訪問

echo classname::constant; //類外部訪問

<?php

class

demo

}//在類的外部訪問常量 類名::常量名

echo demo:

:host

;echo"";

$demo

=new

demo()

;echo

$demo

->

getconst()

;

<?php

class

demo

class

demo1

extends

demo

$demo

=new

demo()

;$demo1

=new

demo1()

;// instanceof 可以用於判斷乙個物件是否由乙個類或這個類子類例項化來的

var_dump

($demo

instanceof

demo);

var_dump

($demo1

instanceof

demo1);

var_dump

($demo

instanceof

demo1);

var_dump

($demo1

instanceof

demo

);

php物件導向(OOP) final關鍵字

這個關鍵字只能用來定義 類和定義 方法,不能使用final這個關鍵字來定義成員屬性,因為final是常量的意思,我們在php裡定義常量使用的是define 函式,所以不能使用final來定義成員屬性。使用final關鍵標記的類不能被繼承 final class person class studen...

物件導向程式設計 static關鍵字

物件導向程式設計 static關鍵字 static關鍵字總結 class static 2,靜態方法 a,和靜態變數相同,靜態方法同樣可以在不建立物件下,通過類名直接呼叫.b,在靜態方法裡只能直接呼叫同類中其它的靜態成員 包括變數和方法 而不能直接訪問類中的非靜態成員。這是因為,對於非靜態的方法和變...

c primer 物件導向程式設計關鍵字

1.虛函式 virtual關鍵字來定義,主要是基類的派生類,作用是為了派生類可以在相同函式名的時候,可以有自己的功能,而不用執行基類的行為。class pp void pp test 結果是 test tt tt 2.關鍵字 static 靜態成員 靜態成員如果有n個同類的物件,那麼每乙個物件都分別...