PHP提升:PHP的類、對象、構(gòu)造方法.ppt_第1頁
PHP提升:PHP的類、對象、構(gòu)造方法.ppt_第2頁
PHP提升:PHP的類、對象、構(gòu)造方法.ppt_第3頁
PHP提升:PHP的類、對象、構(gòu)造方法.ppt_第4頁
PHP提升:PHP的類、對象、構(gòu)造方法.ppt_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、PHP的類、對象、構(gòu)造方法,PHP提升,面向?qū)ο?從OOP的視角看,不應(yīng)區(qū)分語言。無論是C+、無論是Java、無論是.net還有更多面向?qū)ο蟮恼Z言,只要你了解了OO的真諦,便可以跨越語言,讓你的思想輕松的跳躍。便沒有對于Java、.net 、 PHP 之間誰強(qiáng)誰弱的爭執(zhí)了。,PHP5面向?qū)ο蠡A(chǔ),類和對象 PHP5中的類和對象 PHP5 中的屬性 PHP5中的方法 對象的比較 構(gòu)造函數(shù) 析構(gòu)函數(shù)與PHP的垃圾回收機(jī)制 面向?qū)ο髮嵗?類和對象,Everything is Object:萬事萬物皆對象。 類(Class)是用來描述一個對象(Object): 類描述了每個對象應(yīng)包括的數(shù)據(jù) 類描述了每

2、個對象的行為特征 Class/Object:類(class)和對象(object)是面向?qū)ο蠓椒ǖ暮诵母拍睢?類是對一類事物描述,是抽象的、概念上的定義; 對象是實際存在的該類事物的每個個體,因而也稱實例(instance)。 創(chuàng)建對象的過程稱為 創(chuàng)建對象 也稱為實例化。,PHP5中的類和對象,我們先建立一個基礎(chǔ)的類。 PHP中使用關(guān)鍵字 class 來定義一個類。類的命名一般使用首字符大寫,而后每個單詞首字符大寫連接的方式方便閱讀。,這樣,我們就擁有了第一個PHP類。 我們繼續(xù)來使用這個類,使用 new 這個關(guān)鍵字創(chuàng)建對象,用echo打印$p。 我們定義了一個變量 $p ,使用 new 這個

3、關(guān)鍵字創(chuàng)建了一個Person的對象。 打印變量$p,我們看到輸出Object id #1 提示這是一個對象。 $p = new Person();也可以寫成 $p = new Person; 但不建議使用后面的這種方式。,PHP5 中的屬性,屬性:用來描述對象的數(shù)據(jù)元素稱為對象的屬性(也稱為數(shù)據(jù)/狀態(tài)) 在PHP5中,屬性指在class 中聲明的變量。在聲明變量時,必須使用 public private protected 之一進(jìn)行修飾,定義變量的訪問權(quán)限。 Public(公開): 可以自由的在類的內(nèi)部外部讀取、修改。 Private(私有): 只能在這個當(dāng)前類的內(nèi)部讀取、修改。 Protec

4、ted(受保護(hù)):能夠在這個類和類的子類中讀取和修改。 屬性的使用:通過引用變量的 - 符號調(diào)用變量指向?qū)ο蟮膶傩浴?在方法內(nèi)部通過 $this- 符號調(diào)用同一對象的屬性。,Person類有兩個屬性,$name 和 $age , 在實例化后,使用$p-name 和 $p-age 打印出屬性的內(nèi)容。 當(dāng)然,你可以在屬性定義時不設(shè)置初始值,那樣的話,就打印不出任何結(jié)果了。,改變對象的屬性,注意 8行和9行代碼,還有輸出結(jié)果的變化。我們看到輸出的屬性值被改變了。,創(chuàng)建一個Person的對象,改變這個對象的屬性。為它命名,查看它的名字。按照你定義的規(guī)則,這個實實在在內(nèi)存中的Person對象被創(chuàng)建了,而

5、且它有了可以改變的屬性。 Private 修飾的屬性,在當(dāng)前對象以外不能訪問。設(shè)置私有屬性是為了進(jìn)行數(shù)據(jù)的隱藏,屬性的初值 在PHP5中,在屬性定義可以不設(shè)置初值,或者賦予以下紅色類型的初值。 PHP中簡單類型有8種,分別是: 數(shù)值類型 boolean 布爾類型 integer整型 float 浮點型,也稱為 double 雙精度浮點型 string 字符串 復(fù)合類型 array 數(shù)組 object對象 特殊類型 resource資源 NULL,注意: 在上面例子中,第13行,嘗試創(chuàng)建對象并將值賦予屬性$a 會報錯。 第14行,建立資源并復(fù)制給$res會出現(xiàn)錯誤。 第15行,使用上面定義的屬性

6、為新屬性賦值也會產(chǎn)生錯誤。 (在Java中,可以作13行和15行這樣的操作。 PHP5中定義屬性的默認(rèn)值,被限制到最簡單的方式。其它的操作,交給構(gòu)造方法操作,后面內(nèi)容中將講解構(gòu)造方法。),變量與引用變量 普通變量間的傳值方法,就是值的賦值。比如數(shù)組,而指向?qū)ο蟮淖兞?,是一個引用變量。在這個變量里面存儲的是所指向?qū)ο蟮膬?nèi)存地址。引用變量傳值時,傳遞的是這個對象的指向。而非復(fù)制這個對象。,屬性的擴(kuò)充 $this 指當(dāng)前對象。 $this- 調(diào)用當(dāng)前對象的 屬性或者方法。 在類中使用$this- 調(diào)用一個未定義的屬性時,PHP5會自動創(chuàng)建一個屬性供使用。 這個被創(chuàng)建的屬性,默認(rèn)的方法權(quán)限是publi

7、c。,PHP5中的方法,方法:對對象的屬性進(jìn)行的操作稱為對象的方法(也稱為行為/操作)。 過程 函數(shù) 方法 過程:過程是編制程序時定義的一個語句序列,用來完成某種指定的操作。 函數(shù):函數(shù)有返回值,也是定義的語句序列。 方法:在面向?qū)ο蟾拍钪?,類里面的一段語句序列。 一般來說,在面向?qū)ο蟾拍钪?,函?shù)和方法兩個名詞是通用的。,上面的例子將屬性設(shè)置為private ,同時聲明了public的getName()方法,用來獲取屬性$name的值,調(diào)用getName()方法就會通過 return $this-name 返回 $name 的值。 注意:這里,方法內(nèi)部調(diào)用本地屬性時,使用 $this-name

8、來獲取屬性。在這個例子中,設(shè)置了公開的getName()方法,即用戶只能獲取$name, 而無法改變他的值。這就是封裝的好處。,方法的參數(shù) 通過方法定義時的參數(shù),可以向方法內(nèi)部傳遞變量。 如下第5行,定義方法時定義了方法參數(shù)$_a,。 使用這個方法時,可以向方法內(nèi)傳遞參數(shù)變量。方法內(nèi)接受到的變量是局部變量,僅在方法內(nèi)部有效??梢酝ㄟ^向?qū)傩詡鬟f變量值的方式,讓這個變量應(yīng)用于整個對象。,如果聲明這個方法有參數(shù),而調(diào)用這個方法時沒有傳遞參數(shù),或者參數(shù)數(shù)量不足, 系統(tǒng)會報出錯誤。 如果參數(shù)數(shù)量超過方法定義參數(shù)的數(shù)量,PHP就忽略多于的參數(shù)。不會報錯。,可以在函數(shù)定義時為參數(shù)設(shè)定默認(rèn)值。 在調(diào)用方法時,

9、如果沒有傳遞參數(shù),將使用默認(rèn)值填充這個參數(shù)變量。,可以向一個方法內(nèi)部傳遞另外一個對象的引用變量。 在方法內(nèi)部,這個引用可以一直傳遞,在需要的時候,調(diào)用這個對象的屬性和方法。,再次提示 在PHP5中,指向?qū)ο蟮淖兞渴且米兞?。在這個變量里面存儲的是所指向?qū)ο蟮膬?nèi)存地址。引用變量傳值時,傳遞的是這個對象的指向。而非復(fù)制這個對象。 這與其它類型賦值有所不同。,對象的比較,在PHP中有 = 賦值符號、= 等于符號 和 = 全等于符號, 這些符號代表什么意思? 當(dāng)使用比較操作符(=)時,對象以一種很簡單的規(guī)則比較:當(dāng)兩個對象有相同的屬性和值,屬于同一個類且被定義在相同的命名空間中,則兩個對象相等。等于符

10、號比較對象時,比較對象是否有相同的屬性和值。 注意:= 比較兩個不同的對象的時候,可能相等也可能不等。,使用 = 符號比較兩個對象 ,比較的僅僅是兩個對象的內(nèi)容是否一致。 當(dāng)使用全等符(=)時,當(dāng)且僅當(dāng)兩個對象指向相同類(在某一特定的命名空間中)的同一個對象時才相等。 是否在是同一個對象,兩邊指向的對象是否有同樣的內(nèi)存地址。,結(jié)果= 比較的是兩個變量是否一個對象。,一個等于符號(=)表示賦值,是賦值計算。 如果將對象賦予變量,是指變量將指向這個對象。,構(gòu)造函數(shù),構(gòu)造方法又稱為構(gòu)造函數(shù),是對象被創(chuàng)建時自動調(diào)用的方法,用來完成類初始化的工作。 構(gòu)造函數(shù)和其它函數(shù)一樣,可以傳遞參數(shù),可以設(shè)定參數(shù)默認(rèn)

11、值。 構(gòu)造函數(shù)可以調(diào)用屬性,可以調(diào)用方法。 構(gòu)造函數(shù)可以被其它方法顯式調(diào)用。 在PHP4 中使用與類名同名的方法為構(gòu)造函數(shù)。在PHP5中依然支持了這種方式,但不建議再使用這種方式。,在PHP5中規(guī)定構(gòu)造函數(shù)使用_ _construct() 函數(shù)表示構(gòu)造函數(shù),注意是兩個 _ 。,析構(gòu)函數(shù)與PHP的垃圾回收機(jī)制,析構(gòu)函數(shù):當(dāng)某個對象成為垃圾或者當(dāng)對象被顯式銷毀時執(zhí)行。 GC(Garbage Collector) 在PHP中,沒有任何變量指向這個對象時,這個對象就成為垃圾。PHP會將其在內(nèi)存中銷毀。 這是PHP的GC(Garbage Collector)垃圾處理機(jī)制,防止內(nèi)存溢出。 當(dāng)一個PHP線程結(jié)束時,當(dāng)前占用的所有內(nèi)存空間都會被銷毀,當(dāng)前程序中的所有對象同樣被銷毀。,_destruct() 析構(gòu)函數(shù),是在垃圾對象被回收時執(zhí)行。 析構(gòu)函數(shù)也可以被顯式調(diào)用,但不要這樣去做。 析構(gòu)函數(shù)是由系統(tǒng)自動調(diào)用的,不要在程序中調(diào)用一個對象的虛構(gòu)函數(shù)。 析構(gòu)函數(shù)不能帶有參數(shù)。,當(dāng)對象沒有指向時,對象被銷毀。 上面的例子第10行,我們將$p設(shè)置為空或者第11行賦予$p一個字符串,這樣$p之前指向的對象就成為了垃圾對象。PHP將這個對象垃圾銷毀。,unset一個引用變量時。 unset 銷毀的是指向?qū)ο蟮淖兞?,而不是這個對象。,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論