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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

10、號(hào)比較對(duì)象時(shí),比較對(duì)象是否有相同的屬性和值。 注意:= 比較兩個(gè)不同的對(duì)象的時(shí)候,可能相等也可能不等。,使用 = 符號(hào)比較兩個(gè)對(duì)象 ,比較的僅僅是兩個(gè)對(duì)象的內(nèi)容是否一致。 當(dāng)使用全等符(=)時(shí),當(dāng)且僅當(dāng)兩個(gè)對(duì)象指向相同類(在某一特定的命名空間中)的同一個(gè)對(duì)象時(shí)才相等。 是否在是同一個(gè)對(duì)象,兩邊指向的對(duì)象是否有同樣的內(nèi)存地址。,結(jié)果= 比較的是兩個(gè)變量是否一個(gè)對(duì)象。,一個(gè)等于符號(hào)(=)表示賦值,是賦值計(jì)算。 如果將對(duì)象賦予變量,是指變量將指向這個(gè)對(duì)象。,構(gòu)造函數(shù),構(gòu)造方法又稱為構(gòu)造函數(shù),是對(duì)象被創(chuàng)建時(shí)自動(dò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è) _ 。,析構(gòu)函數(shù)與PHP的垃圾回收機(jī)制,析構(gòu)函數(shù):當(dāng)某個(gè)對(duì)象成為垃圾或者當(dāng)對(duì)象被顯式銷毀時(shí)執(zhí)行。 GC(Garbage Collector) 在PHP中,沒有任何變量指向這個(gè)對(duì)象時(shí),這個(gè)對(duì)象就成為垃圾。PHP會(huì)將其在內(nèi)存中銷毀。 這是PHP的GC(Garbage Collector)垃圾處理機(jī)制,防止內(nèi)存溢出。 當(dāng)一個(gè)PHP線程結(jié)束時(shí),當(dāng)前占用的所有內(nèi)存空間都會(huì)被銷毀,當(dāng)前程序中的所有對(duì)象同樣被銷毀。,_destruct() 析構(gòu)函數(shù),是在垃圾對(duì)象被回收時(shí)執(zhí)行。 析構(gòu)函數(shù)也可以被顯式調(diào)用,但不要這樣去做。 析構(gòu)函數(shù)是由系統(tǒng)自動(dòng)調(diào)用的,不要在程序中調(diào)用一個(gè)對(duì)象的虛構(gòu)函數(shù)。 析構(gòu)函數(shù)不能帶有參數(shù)。,當(dāng)對(duì)象沒有指向時(shí),對(duì)象被銷毀。 上面的例子第10行,我們將$p設(shè)置為空或者第11行賦予$p一個(gè)字符串,這樣$p之前指向的對(duì)象就成為了垃圾對(duì)象。PHP將這個(gè)對(duì)象垃圾銷毀。,unset一個(gè)引用變量時(shí)。 unset 銷毀的是指向?qū)ο蟮淖兞?,而不是這個(gè)對(duì)象。,

溫馨提示

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

評(píng)論

0/150

提交評(píng)論