php物件導向學習筆記

來源:互聯網
上載者:User

標籤:des   java   使用   io   ar   檔案   cti   代碼   html   

1、寫類的要點:
類名要具有描述性,有意義
駝峰式命名 如:class GirlFriend
2、類裡面的變數--成員屬性
類裡面的函數--成員方法
3、在類的成員屬性前面一定要有一個修飾詞,如果不知道是用什麼修飾詞,就可以使用var(關鍵字),如果一旦有其他的修飾詞就不要有var

4、構造方法 __construct();
Ⅰ 、是對象建立完成以後,第一個自動調用的方法(特殊)
Ⅱ、方法名稱比較特殊,可以和類名相同名的方法名
Ⅲ、給對象中的成員賦初值使用的
5、析構方法 __destruct();
在對象被銷毀之前自動調用
不能帶有任參數
主要用於釋放資源(如關閉檔案,釋放結果集等)

6、魔術方法:
__get()
1、自動調用:是在直接存取私人成員的時候,自動調用! 一個參數
__set()
1、自動調用:是在直接設定私人屬性值的時候,自動調用! 兩個參數
__isset()isset() 在使用isset()判斷一個私人屬性是否存在時,自動調用__isset()魔術方法,參數則是屬性名稱
__unset()unset()在使用unset()刪除一個私人成員的時候,自動調用__unset()魔術方法,參數為屬性名稱

物件導向的編程思想的三個特性: 封裝性、繼承性、多態

7、繼承 --- 擴充 extends
① 子類使用extends繼承父類,子類可以將父類中所有的內容都繼承過來
② private是私人的,只能自己用,不能別人用,包括自己的子類也不能用
③ protected 這個是保護的許可權, 只能是自己和自己的的子類中可以使用的成員,不能在外面使用
④ public 這個是公開的許可權,所有都可以, 自己和子類,類外部都可以使用

8、常見關鍵字
instanceof
“instanceof”操作符用於檢測當前對象執行個體是否屬於某一個類的類型
final
在php中final不定義常量,所以就不會使用,也不能用final來修飾成員屬性
1、final可以修飾類 -- 這個類不能去擴充,不能有子類(不讓別人去擴充,這個類是最終的類時)
2、final可以修飾方法 -- 這個方法就不能在子類中覆蓋(不讓子類去改這個方法,或擴充這個方法的功能時,這個方法也就是最終的方法)
static
static可以修飾屬性和方法,不能修飾類,
1、使用static修飾成員屬性,存在記憶體的初始化靜態段
2、可以被所有同一個類的對象共用
3、第一次用到類(類名第一次出現),類在載入到記憶體時,就已經將靜態成員加到了記憶體
對象 -> 成員
類 :: 成員
4、靜態成員一定要使用類來訪問
5、self可以在類的方法中,代表自己類的($this)
6、靜態成員一旦被載入,只有指令碼結束才會被釋放掉
7、在靜態方法中是不能訪問非靜態成員
8、只要能使用靜態環境下聲明方法,就最好使用靜態方法(主要考慮效率)

9、單態(單例、單件)設計模式 -- 最適合php使用這個設計模式
1、如果想讓一個類只能有一個對象,就要先讓這個類不能建立對象,將構造方法private
2、可以在類的內部使用一個靜態方法來建立對象

10、對象序列化(序列化)
1、將對象轉成字串(不用看懂) --- 序列化(serialize)
2、將字串轉回對象 --- 反序列化(unserialize)

注意(序列化的時機):
1、將對象在網路中傳輸
2、將對象持久儲存
數組序列化 json -- javascript object
1、eval()函數 -- 檢查並執行php代碼
var_dump()
var_export() -- 返回關於傳遞給該函數的變數的結構資訊
__set_state()魔術方法,就是在使用var_export()方法時,匯出一個類的資訊時,自動調用的方法(靜態、公用的)
__invoke()魔術方法 ,是在對象執行個體之後,直接像變數函數調用時,自動調用這個方法(靜態、公用的) php5.3以後新加的方法
__call()魔術方法,是在調用不存在的方法時,自動調用這個方法
__callStatic()魔術方法,是在調用不存在的靜態方法時,自動調用這個方法(靜態、公用的)
__autoload()魔術方法,可以寫在類外面,只要在這個指令碼中,需要載入類的時候(必須用到類名),就會自動調用這個方法

11、抽象方法和抽象類別
1、什麼是抽象方法?
定義:一個方法如果沒有方法體(一個方法,不使用“{}”,直接使用分號結束的方法,才是沒有方法體的方法),這個方法就是抽象方法
一、聲明一個方法,不使用{},而直接用分號結束。
二、如果是抽象方法,必須使用abstract(抽象關鍵字來修飾)。
2、什麼是抽象類別?
一、如果一個類中有一個方法是抽象方法,則這個類就是抽象類別
二、如果聲明一個抽象類別,則這個類必須要使用abstract關鍵字來修飾

注意1:
1、只要使用abstract修飾這個類,這個類就是抽象類別
2、抽象類別是一種特殊的類,特殊在哪裡(在抽象類別中可以有抽象方法)
3、除了在抽象類別中可以有抽象方法以外,和正常的完全一樣
注意2:
1、抽象類別不能執行個體化對象,也就是抽象類別不能建立出對象
2、如果看見抽象類別,就必須寫這個類的子類,將抽象類別中的抽象方法覆蓋(加上方法體)
3、子類必須全部實現(覆蓋重寫)抽象方法,這個子類才能建立對象,如果只實現部分,那麼還有抽象方法,則類也就必須是抽象類別

抽象方法的作用:
抽象方法的作用是規定了子類必須有這個方法的實現,功能交給子類
唯寫出結構,而沒有實現,實現交給具體的子類(按自己的功能)去實現
抽象類別的作用:
就是要求子類的結構,所以抽象類別就是一個規範
abstract class Person{
public $name;
public $sex;
//抽象方法
abstract function say();
abstract function eat();
public function run(){
echo ‘run‘;
}
public function sleep(){
echo ‘sleep‘;
}
}

12、物件導向中的介面技術
抽象類別是一種特殊的類,介面是一種特殊的抽象類別,所以介面是一種特殊特殊的類
1、抽象類別和介面都有抽象方法
2、抽象類別和介面都不能建立執行個體對象
3、抽象類別和介面的使用意義也就是作用相同

介面和抽象類別相比,特殊在哪裡?
1、介面中的方法,必須全部是抽象方法(不能用不抽象的方法)
所以在介面中的抽象方法不需要使用abstract,直接使用分號結束即可
2、介面中的成員屬性必須是常量,不能有變數
3、介面中所有的許可權都必須是共有的(public)
4、聲明介面不使用class,而是使用interface
介面應用的一些細節:
1、可以使用extends,讓一個介面繼承另一個介面(介面和介面 -- 只有擴充新抽象方法,沒有覆蓋的關係)
2、可以使用一個類來實現介面中的全部方法,也可以使用一個抽象類別,來實現介面中的部分方法
(類與介面, 抽象類別與介面 -- 覆蓋 -- 重寫,實現介面中的抽象方法)
3、就不要使用extends關鍵字,使用implements實現, implements相當於extends
extends繼承(擴充),這個在php中,一個類只能有一個父類
4、一個類可以在繼承另一個類的同時,使用implements實現一個介面,可以實現多個介面(一定要先繼承,再實現介面)
5、實現多個介面,只需要使用逗號分開多個介面即可

//聲明一個介面使用interface
interface Demo{
const NAME = ‘張三‘;
const SEX = ‘男‘;
function test1();
function test2();
function test3();
}

13、PHP面象對象的特性多態
多態特性
1、程式擴充準備
技術:
1、必須有繼承關係,父類最好是介面或者抽象類別

14、命名空間 -- 名字空間
1、常量
2、函數
3、類
一、namespace來聲明
二、在namespace聲明命名空間的代碼上面,不能有任何PHP代碼和HTML內容輸出(除了declare),聲明命名空間只能是第一條
三、定義多個命名空間,以最後一個為準
四、在實際的編程實踐中,非常不提倡在同一個檔案中定義多個命名空間(不要在大括弧外部加任何代碼)


php物件導向學習筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.