PhP物件導向

2022-06-03 22:30:29 字數 1683 閱讀 8076

一、定義類使用關鍵字class定義

二、例項化物件使用關鍵字new例項化物件

三、類成員的新增和訪問

(1)類成員:屬性、方法、常量

(2)新增成員需要使用修飾符  public、protected、private

(3)修飾符的作用範圍

public 類內類外子類

protected 類內 子類

private 類內

(4)新增方法:如果方法前不帶修飾符,預設帶public;

(5)新增常量:const 常量名;

訪問常量:類名::常量名;

::範圍解析操作符

四、類內部物件$this和記憶體原理

$this是乙個物件,指向例項化物件。當我們new例項化的時候,系統會給這個物件分配乙個記憶體空間,記憶體空間分為棧記憶體和堆記憶體,將變數存在棧裡,**塊存在堆裡,然後堆的記憶體位址指向棧裡的變數,如果再給棧中的變數賦值引用資料型別,記憶體位址就會被改變

五、如果$a和$p指向同乙個記憶體位址,它們是同乙個物件,則改變乙個則兩個都會變

需要用轉殖解決這個問題 關鍵字clone;通過clone來複製乙個一模一樣的物件,這樣它們就不是同乙個物件了;

六、建構函式和析構函式

(1)建構函式:我們在宣告類的時候就存在這個函式,用new例項化時,函式自動呼叫。

public function __construct(){};

(2)析構函式:用於釋放new例項化的記憶體空間,如果不銷毀,會增加系統效能負荷;

new例項化時,系統會自動呼叫;銷毀原則:先人後出。

七、靜態成員

靜態成員的新增:在成員屬性或方法前加關鍵字 static

靜態成員的訪問: 內部使用:self::$變數;或   類名::$變數;

外部使用: 類名::$變數;

八、物件導向的三大特徵

(1)封裝:對外只提供可操作的方法,不會告訴你內部結構

(2)繼承 子類可以繼承父類的屬性和方法,但是是有限繼承,

public、protected、private三個修飾的屬性都可以繼承,public、protected兩個

修飾的方法可以繼承,父類的常量可以繼承

(3)多型:php沒有多型

過載:當子類跟父類有個相同的方法時,子類的方法會覆蓋父類的方法

九、關鍵字:parent

在繼承中的子類有parent,可以訪問父類的常量、方法、父類的靜態屬性,屬性成員不能訪問

訪問方式: parent::$靜態屬性、fn()、常量

十、final  不可過載的

(1)寫在類前面 不許類被繼承

(2)寫在方法和屬性前 子類不能過載父類的方法

一、抽象類 abstract

(1)抽象類不能被例項化

(2)如果乙個類裡面有乙個方法被宣告為抽象類,這個類就得申明抽象類

(3)只要這個方法被宣告為抽象方法了,就不能寫函式體,將函式後面的{}去掉,函式體由子類實現

(4)在繼承乙個抽象類的時候,子類必須定義父類

PHP物件導向

1 什麼是物件導向 起初,物件導向 是專指在程式設計中採用封裝 繼承 抽象等設計方法。可是,這個定義顯然不能再適合現在情況。物件導向的思想已經涉及到軟體開發的各個方面。如 物件導向的分析 ooa,object oriented analysis 物件導向的設計 ood,object oriented...

php物件導向

smarty自定義函式 作用 用於在模板被執行時為模板變數賦值 函式名稱 assign 引數 var 宣告變數名稱 字串 value 給該變數賦值 字串 tpl assign title this is title 實現自定義函式有兩種 1.註冊自定義函式 3.版本不支援 tpl register ...

php物件導向

一 寫出php的public protected private三種訪問控制模式的區別 public 公有,任何地方都可以訪問 protected 繼承,只能在本類或子類中訪問,在其他地方不允許訪問 private 私有,只能在本類中訪問,在其他地方不允許訪問 二 請用單態設計模式方法設計類滿足要求...