PHP面向?qū)ο蟪绦蛟O(shè)計(jì).ppt

PHP面向?qū)ο蟪绦蛟O(shè)計(jì).ppt

ID:51620489

大?。?99.05 KB

頁(yè)數(shù):33頁(yè)

時(shí)間:2020-03-26

PHP面向?qū)ο蟪绦蛟O(shè)計(jì).ppt_第1頁(yè)
PHP面向?qū)ο蟪绦蛟O(shè)計(jì).ppt_第2頁(yè)
PHP面向?qū)ο蟪绦蛟O(shè)計(jì).ppt_第3頁(yè)
PHP面向?qū)ο蟪绦蛟O(shè)計(jì).ppt_第4頁(yè)
PHP面向?qū)ο蟪绦蛟O(shè)計(jì).ppt_第5頁(yè)
資源描述:

《PHP面向?qū)ο蟪绦蛟O(shè)計(jì).ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、第6章PHP面向?qū)ο蟪绦蛟O(shè)計(jì)6.1基本概念6.2PHP中的類(lèi)6.3類(lèi)的繼承6.4抽象類(lèi)與接口6.5類(lèi)的魔術(shù)方法6.6類(lèi)型判斷與引用6.7實(shí)例——設(shè)計(jì)一個(gè)學(xué)生管理類(lèi)6.1基本概念1.封裝封裝是將數(shù)據(jù)和代碼捆綁到一起,避免外界的干擾和不確定性。在PHP中,封裝是通過(guò)類(lèi)來(lái)實(shí)現(xiàn)的。類(lèi)是抽象數(shù)據(jù)類(lèi)型的實(shí)現(xiàn),一個(gè)類(lèi)的所有對(duì)象都具有相同的數(shù)據(jù)結(jié)構(gòu),并且共享相同的實(shí)現(xiàn)操作的代碼,而各個(gè)對(duì)象又有著各自不同的狀態(tài),即私有的存儲(chǔ)。因此,類(lèi)是所有對(duì)象的共同的行為和不同狀態(tài)的結(jié)合體。2.繼承類(lèi)提供了創(chuàng)建新類(lèi)的一種方法,再借助于“繼承”這一重要機(jī)制

2、擴(kuò)充了類(lèi)的定義,實(shí)現(xiàn)了面向?qū)ο蟮膬?yōu)越性。繼承提供了創(chuàng)建新類(lèi)的方法,這種方法就是,一個(gè)新類(lèi)可以通過(guò)對(duì)已有的類(lèi)進(jìn)行修改或擴(kuò)充來(lái)滿足新類(lèi)的需求。新類(lèi)共享已有類(lèi)的行為,而自己還具有修改的或額外添加的行為。因此,可以說(shuō)繼承的本質(zhì)特征是行為共享。3.多態(tài)不同的類(lèi)對(duì)于不同的操作具有不同的行為,稱(chēng)為多態(tài)。多態(tài)機(jī)制使具有不同的內(nèi)部結(jié)構(gòu)的對(duì)象可以共享相同的外部接口,通過(guò)這種方式減少代碼的復(fù)雜度。6.2PHP中的類(lèi)6.2.1創(chuàng)建類(lèi)類(lèi)是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心,它是一種數(shù)據(jù)類(lèi)型。類(lèi)由變量和函數(shù)組成,在類(lèi)里面,變量稱(chēng)為屬性或成員變量,函數(shù)稱(chēng)為方法。

3、定義類(lèi)的語(yǔ)法格式如下:classclassname{[var$property[=value];…][functionfunctionname($args){//代碼}]}6.2.1創(chuàng)建類(lèi)自PHP5.5起,關(guān)鍵字class也可用于類(lèi)名的解析。使用classname::class可以獲取一個(gè)字符串,包含了類(lèi)classname的完全限定名稱(chēng)。這對(duì)使用了命名空間的類(lèi)尤為有用。例如:以上程序會(huì)輸出:NS

4、classname6.2.2類(lèi)的屬性和方法在類(lèi)中,使用關(guān)鍵字var來(lái)聲明變量,即類(lèi)的屬性。使用關(guān)鍵字function來(lái)定義函數(shù),即類(lèi)的方法。例如,以下是一個(gè)簡(jiǎn)單的類(lèi)定義:classa{var$a='helloworld';functionfun($b){echo"helloworld";}}6.2.2類(lèi)的屬性和方法自PHP5.3.0起,新增對(duì)nowdoc(詳見(jiàn)第3.2.3節(jié))的支持,即可以使用nowdoc初始化屬性,例如:classa{var$a=<<<'EOT'helloworldEOT;…}不能將類(lèi)的定義放到多個(gè)文

5、件或多個(gè)PHP塊中,例如,以下的做法是錯(cuò)誤的:var$tmp;6.2.3類(lèi)的實(shí)例化在聲明一個(gè)類(lèi)后,類(lèi)只存在于文件中,程序不能直接調(diào)用。需要?jiǎng)?chuàng)建一個(gè)對(duì)象后程序才能使用,創(chuàng)建一個(gè)類(lèi)對(duì)象的過(guò)程叫做類(lèi)的實(shí)例化。類(lèi)的實(shí)例化使用new關(guān)鍵字,關(guān)鍵字后面需要指定實(shí)例化的類(lèi)名,例如,定義一個(gè)Ctest類(lèi)并實(shí)例化:

6、$str)//聲明一個(gè)方法{$this->stunumber=$str;//使用$this指針引用類(lèi)內(nèi)部的屬性echo$this->stunumber;}}$obj=newCtest;//創(chuàng)建Ctest類(lèi)的一個(gè)對(duì)象$obj?>在實(shí)例化一個(gè)類(lèi)時(shí),有些類(lèi)允許在實(shí)例化時(shí)接收參數(shù),如果能夠接收參數(shù),可以使用以下代碼創(chuàng)建對(duì)象,其中$args是所帶參數(shù):$obj=newCtest([$args,…]);6.2.4類(lèi)的訪問(wèn)在對(duì)象被創(chuàng)建之后,可以在類(lèi)的外部對(duì)該類(lèi)的屬性和方法進(jìn)行訪問(wèn),訪問(wèn)的方法是在該類(lèi)對(duì)象后面使用“->”符號(hào)加上要訪問(wèn)的

7、屬性和方法。例如,創(chuàng)建了對(duì)象“$obj”,類(lèi)中有屬性“$stunumber”,要訪問(wèn)該屬性可以使用“$obj->stunumber”,注意屬性的前面沒(méi)有“$”。例如,訪問(wèn)Ctest類(lèi)的屬性和方法:$obj->stunumber='081102';//給類(lèi)屬性$stunumber賦值echo$obj->stunumber;//輸出'081102'$obj->add('081101');//輸出'081101'6.2.4類(lèi)的訪問(wèn)在PHP?5中,引入了訪問(wèn)修飾符public、private和protected。它們可以控制屬性

8、和方法的可見(jiàn)性,通常放置在屬性和方法的聲明之前。?public。聲明為公用的屬性和方法,可以在類(lèi)的外部或內(nèi)部進(jìn)行訪問(wèn)。public是默認(rèn)選項(xiàng),如果沒(méi)有為一個(gè)屬性或方法指定修飾符,那么它將是public的。?private。聲明為私有的屬性和方法,只可以在類(lèi)的內(nèi)部進(jìn)行訪問(wèn)。私有的屬性和方法將不會(huì)被繼承。?protect

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。