php中靜態方法的使用

2022-03-30 13:43:17 字數 3071 閱讀 9969

靜態方法

(1)靜態方法不能訪問這個類中的普通屬性,因為那些屬性屬於乙個物件,但可以訪問靜態屬性;

(2)從當前類(不是子類)中訪問靜態方法或屬性,可以使用self關鍵字,self 指向當前類,就像 $this  指向當前物件一樣;

(3)不能再物件中呼叫靜態方法,靜態方法和屬性又被稱為類方法和類屬性,因此不能再物件中使用偽變數 $this 。

靜態方法的優點:

(1)在**的任何地方都可以用(假設可以訪問該類);

(2)類的每個例項都可以訪問類中定義的靜態屬性,可以利用靜態屬性來設定值,該值可以被類的所有物件使用;

(3)不需要例項物件就能訪問靜態屬性或方法。

<?php 

$pdo = new pdo('mysql:host=localhost;dbname=mydb','root'); //

生成乙個 pdo(php data object) 物件

class

shopproduct

/*** @return mixed 這種只返回屬性值的方法稱為「訪問方法」,也稱為 getter 和 setter

*/public

function

getproducerfirstname()

/*** @return mixed 獲取 姓 的訪問方法

*/public

function

getproducermainname()

/*** @param $num 打折的**

*/public

function setdiscount($num

)

/*** @return int 折扣的訪問方法

*/public

function

getdiscount()

/*** @return mixed book名或cd名的訪問方法

*/public

function

gettitle()

/*** @return mixed 折扣後的**

*/public

function

getprice()

/*** @return string 作者

*/public

function getproducer()

/*** @return string 發票的摘要資訊

*/public

function

getsummaryline()

( ,) ";

return

$base

; }

/*** @param $id id 的訪問方法, setter

*/public

function setid($id

)

//根據查詢資料的資料型別,返回特定型別的 shopproduct 物件,這個方法沒有使用任何例項的屬性和方法,因此把它定義為乙個靜態方法(static),只要有乙個有效的 pdo 物件,就可以在程式的任何地方呼叫這個方法。這個方法就像工廠一樣,可以接受原始資料產生特定型別的物件。

public

static

function getinstance($id,pdo $pdo

)

switch($row['type'])

$product -> setid($row['id']);

$product -> setdiscount($row['discount']);

return

$product

; }}//

若派生類沒有定義構造方法,則它在例項化是會自動呼叫父類的構造方法。子類預設繼承父類所有的 public 和 protected 方法,但不繼承 private 方法和屬性

class bookproduct extends

shopproduct

/*** @param $numpages 書的頁數

* @return mixed 總頁數

*/public

function

getnumberofpages()

/*** 子類(派生類)可以覆蓋和修改父類(基類或超類)的功能

* @return string book發票的摘要資訊

*/public

function

getsummaryline()

";return

$base

; }

}class cdproduct extends

shopproduct

/***/public

function

getplaylength()

/*** @return string cd發票的摘要資訊

*/public

function

getsummaryline()

";return

$base

; }

}$product = shopproduct::getinstance(1,$pdo); //

該靜態方法根據傳入 id 的不同生成特定型別的物件

php中靜態方法的和屬性的使用

class person class student extends person 輸出成員屬性值 echo person country.p1 new person echo p1 country 報錯 訪問靜態成員方法 person mycountry 靜態方法也可通過物件訪問 p1 mycou...

PHP 中 static 靜態屬性和靜態方法的呼叫

這裡分析了php物件導向中static靜態屬性和靜態方法的呼叫。關於它們的呼叫 能不能呼叫,怎麼樣呼叫 需要弄明白了他們在記憶體中存放位置,這樣就非常容易理解了。靜態屬性 方法 包括靜態與非靜態 在記憶體中,只有乙個位置 而非靜態屬性,有多少例項化物件,就有多少個屬性 header content ...

php中static靜態屬性和靜態方法的呼叫

本文介紹php物件導向中static靜態屬性和靜態方法的呼叫,例項分析了static靜態屬性和靜態方法的原理與呼叫技巧,需要的朋友可以參考下。這裡分析了php物件導向中static靜態屬性和靜態方法的呼叫。關於它們的呼叫 能不能呼叫,怎麼樣呼叫 需要弄明白了他們在記憶體中存放位置,這樣就非常容易理解...