PHP面向?qū)ο蟾鱾€(gè)功能步驟詳解OOP思想_第1頁(yè)
PHP面向?qū)ο蟾鱾€(gè)功能步驟詳解OOP思想_第2頁(yè)
PHP面向?qū)ο蟾鱾€(gè)功能步驟詳解OOP思想_第3頁(yè)
PHP面向?qū)ο蟾鱾€(gè)功能步驟詳解OOP思想_第4頁(yè)
PHP面向?qū)ο蟾鱾€(gè)功能步驟詳解OOP思想_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、PHP面向?qū)ο蠹夹g(shù)11.面象對(duì)象的概念22.什么是類, 什么是對(duì)象, 類和對(duì)象這間的關(guān)系33.什么是面向?qū)ο缶幊棠兀?4.如何抽象出一個(gè)類?45.如何實(shí)例化對(duì)象66.如何去使用對(duì)象中的成員87.特殊的引用“$this“的使用108.構(gòu)造方法與析構(gòu)方法129.封裝性/2009年4月9日1510._set() _get() _isset() _unset()四個(gè)方法的應(yīng)用1911.類的繼函2112.重載新的方法2513.訪問(wèn)類型2814.final關(guān)鍵字的應(yīng)用3115.static和const關(guān)鍵字的使用3216._toString()方法3417.克隆對(duì)象3518._call處理調(diào)用錯(cuò)誤3719

2、.抽象方法和抽象類3820. php5接口技術(shù)4021.多態(tài)的應(yīng)用4222.把對(duì)象串行化4423.自動(dòng)加載類47PHP面向?qū)ο蠹夹g(shù)-php5 基本的OOP思想的介入,帶給學(xué)習(xí)的快樂(lè),生活,情趣。本部分一共包括以下一些技術(shù)點(diǎn):1.面象對(duì)象的概念2.什么是類, 什么是對(duì)象, 類和對(duì)象這間的關(guān)系3.什么是面向?qū)ο缶幊棠兀?.如何抽象出一個(gè)類?5.如何實(shí)例化對(duì)象6.如何去使用對(duì)象中的成員7.特殊的引用“$this“的使用8.構(gòu)造方法與析構(gòu)方法9.封裝性10._set() _get() _isset() _unset()四個(gè)方法的應(yīng)用11.類的繼函12.多態(tài)的應(yīng)用13.重載新的方法14.訪問(wèn)類型15.靜

3、態(tài)成員的使用16.final關(guān)鍵字的應(yīng)用17._toString()方法18.克隆對(duì)象19._call處理調(diào)用錯(cuò)誤20.自動(dòng)加載類21.把對(duì)象串行化22.抽象方法和抽象類23.php5接口技術(shù)1.面象對(duì)象的概念面向?qū)ο缶幊蹋∣bject Oriented Programming, OOP, 面向?qū)ο蟪绦蛟O(shè)計(jì))是一種計(jì)算機(jī)編程架構(gòu),OOP的一條基本原則是計(jì)算機(jī)程序是由單個(gè)能夠起到子程序作用的單元或?qū)ο蠼M合而成,OOP達(dá)到了軟件工程的三個(gè)目標(biāo):重用性、靈活性和擴(kuò)展性。為了實(shí)現(xiàn)整體運(yùn)算,每個(gè)對(duì)象都能夠接收信息、處理數(shù)據(jù)和向其它對(duì)象發(fā)送信息。面向?qū)ο笠恢笔擒浖_(kāi)發(fā)領(lǐng)域內(nèi)比較熱門(mén)的話題,首先,面向?qū)ο蠓?/p>

4、合人類看待事物的一般規(guī)律。其次,采用面向?qū)ο蠓椒梢允瓜到y(tǒng)各部分各司其職、各盡所能。為編程人員敞開(kāi)了一扇大門(mén),使其編程的代碼更簡(jiǎn)潔、更易于維護(hù),并且具有更強(qiáng)的可重用性。有人說(shuō)PHP不是一個(gè)真正的面向?qū)ο蟮恼Z(yǔ)言,這是事實(shí)。PHP 是一個(gè)混合型語(yǔ)言,你可以使用OOP,也可以使用傳統(tǒng)的過(guò)程化編程。然而,對(duì)于大型項(xiàng)目,你可能需要在PHP 中使用純的OOP去聲明類,而且在你的項(xiàng)目里只用對(duì)象和類。這個(gè)概念我先不多說(shuō)了,因?yàn)橛泻芏嗳伺笥堰h(yuǎn)離面向?qū)ο缶幊痰闹饕蚓褪且唤佑|面向?qū)ο蟾拍畹臅r(shí)候就理解不上去, 所以就不想去學(xué)下去了. 等讀者看完整體內(nèi)容后再去把概念搞明白吧。2.什么是類, 什么是對(duì)象, 類和對(duì)象這

5、間的關(guān)系類的概念:類是具有相同屬性和服務(wù)的一組對(duì)象的集合。它為屬于該類的所有對(duì)象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和服務(wù)兩個(gè)主要部分。在面向?qū)ο蟮木幊陶Z(yǔ)言中,類是一個(gè)獨(dú)立的程序單位,它應(yīng)該有一個(gè)類名并包括屬性說(shuō)明和服務(wù)說(shuō)明兩個(gè)主要部分。對(duì)象的概念:對(duì)象是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位。一個(gè)對(duì)象由一組屬性和對(duì)這組屬性進(jìn)行操作的一組服務(wù)組成。從更抽象的角度來(lái)說(shuō),對(duì)象是問(wèn)題域或?qū)崿F(xiàn)域中某些事物的一個(gè)抽象,它反映該事物在系統(tǒng)中需要保存的信息和發(fā)揮的作用;它是一組屬性和有權(quán)對(duì)這些屬性進(jìn)行操作的一組服務(wù)的封裝體??陀^世界是由對(duì)象和對(duì)象之間的聯(lián)系組成的。類與對(duì)象的關(guān)系就如模具

6、和鑄件的關(guān)系,類的實(shí)例化結(jié)果就是對(duì)象,而對(duì)一類對(duì)象的抽象就是類.類描述了一組有相同特性(屬性)和相同行為(方法)的對(duì)象。上面大概就是它們的定義吧, 也許你是剛接觸面象對(duì)象的朋友, 不要被概念的東西搞暈了, 給你舉個(gè)列子吧,如果你去中關(guān)村想買(mǎi)幾臺(tái)組裝的PC機(jī),到了那里你第一步要干什么, 是不是裝機(jī)的工程師和你坐在一起,按你提供的信息和你一起完成一個(gè)裝機(jī)的配置單呀, 這個(gè)配置單就可以想像成是類,它就是一張紙,但是它上面記錄了你要買(mǎi)的PC機(jī)的信息,如果用這個(gè)配置單買(mǎi)10臺(tái)機(jī)器,那么這10臺(tái)機(jī)子,都是按這個(gè)配置單組成的,所以說(shuō)這10臺(tái)機(jī)子是一個(gè)類型的,也可以說(shuō)是一類的。那么什么是對(duì)象呢,類的實(shí)例化結(jié)果

7、就是對(duì)象, 用這個(gè)配置單配置出來(lái)(實(shí)例化出來(lái))的機(jī)子就是對(duì)象, 是我們可以操作的實(shí)體, 10臺(tái)機(jī)子, 10個(gè)對(duì)象。 每臺(tái)機(jī)子都是獨(dú)立的,只能說(shuō)明他們是同一類的,對(duì)其中一個(gè)機(jī)做任何動(dòng)作都不會(huì)影響其它9臺(tái)機(jī)器,但是我對(duì)類修改, 也就是在這個(gè)配置單上加一個(gè)或少一個(gè)配件, 那么裝出來(lái)的9個(gè)機(jī)子都改變了, 這是類和對(duì)象的關(guān)系(類的實(shí)例化結(jié)果就是對(duì)象).3.什么是面向?qū)ο缶幊棠??就不說(shuō)他的概念,如果你想建立一個(gè)電腦教室,首先要有一個(gè)房間, 房間里面要有N臺(tái)電腦,有N個(gè)桌子, N個(gè)椅子, 白板, 投影機(jī)等等,這些是什么,剛才咱們說(shuō)了, 這就是對(duì)象,能看到的一個(gè)個(gè)的實(shí)體,可以說(shuō)這個(gè)電腦教室的單位就是這一個(gè)個(gè)的

8、實(shí)體對(duì)象, 它們共同組成了這個(gè)電腦教室,那么我們是做程序,這和面向?qū)ο笥惺裁搓P(guān)系呢?開(kāi)發(fā)一個(gè)系統(tǒng)程序和建一個(gè)電腦教室類似,你把每個(gè)獨(dú)立的功能模塊抽象成類形成對(duì)象,由多個(gè)對(duì)象組成這個(gè)系統(tǒng),這些對(duì)象之間都能夠接收信息、處理數(shù)據(jù)和向其它對(duì)象發(fā)送信息等等相互作用。就構(gòu)成了面向?qū)ο蟮某绦颉?.如何抽象出一個(gè)類?上面已經(jīng)介紹過(guò)了, 面向?qū)ο蟪绦虻膯挝痪褪菍?duì)象,但對(duì)象又是通過(guò)類的實(shí)例化出來(lái)的,所以我們首先要做的就是如何來(lái)聲明類, 做出來(lái)一個(gè)類很容易,只要掌握基本的程序語(yǔ)法定義規(guī)則就可以做的出來(lái),那么難點(diǎn)在那里呢? 一個(gè)項(xiàng)目要用到多少個(gè)類,用多少個(gè)對(duì)象, 在那要定義類,定義一個(gè)什么樣的類,這個(gè)類實(shí)例化出多少個(gè)

9、對(duì)象, 類里面有多少個(gè)屬性, 有多少個(gè)方法等等,這就需要讀者通過(guò)在實(shí)際的開(kāi)發(fā)中就實(shí)際問(wèn)題分析設(shè)計(jì)和總結(jié)了。類的定義:class 類名使用一個(gè)關(guān)鍵字class和后面加上一個(gè)你想要的類名以及加上一對(duì)大括號(hào), 這樣一個(gè)類的結(jié)構(gòu)就定義出來(lái)了,只要在里面寫(xiě)代碼就可以了, 但是里面寫(xiě)什么? 能寫(xiě)什么?怎樣寫(xiě)才是一個(gè)完整的類呢?上面講過(guò)來(lái),使用類是為了讓它實(shí)例出對(duì)象來(lái)給我們用, 這就要知道你想要的是什么樣的對(duì)象了,像上面我們講的一個(gè)裝機(jī)配置單上寫(xiě)什么,你裝出來(lái)的機(jī)子就有什么。比如說(shuō),一個(gè)人就是一個(gè)對(duì)象,你怎么把一個(gè)你看好的人推薦給你們領(lǐng)導(dǎo)呢?當(dāng)然是越詳細(xì)越好了: 首先, 你會(huì)介紹這個(gè)人姓名、性別、年齡、身高

10、、體重、電話、家庭住址等等。 然后,你要介紹這個(gè)人能做什么, 可以開(kāi)車(chē), 會(huì)說(shuō)英語(yǔ), 可以使用電腦等等。 只要你介紹多一點(diǎn), 別人對(duì)這個(gè)人就多一點(diǎn)了解, 這就是我們對(duì)一個(gè)人的描述, 現(xiàn)在我們總結(jié)一下,所有的對(duì)象我們用類去描述都是類似的, 從上面人的描述可以看到, 做出一個(gè)類來(lái), 從定義的角度分兩部分, 第一是從靜態(tài)上描述, 第二是從動(dòng)態(tài)上描述, 靜態(tài)上的描述就是我們所說(shuō)的屬性, 像上面我們看到的,人的姓名、性別、年齡、身高、體重、電話、家庭住址等等。 動(dòng)態(tài)上也就是人的這個(gè)對(duì)象的功能,比如這個(gè)人可以開(kāi)車(chē), 會(huì)說(shuō)英語(yǔ), 可以使用電腦等等,抽象成程序時(shí),我們把動(dòng)態(tài)的寫(xiě)成函數(shù)或者說(shuō)是方法,函數(shù)和方法是

11、一樣的。所以,所有類都是從屬性和方法這兩方面去寫(xiě), 屬性又叫做這個(gè)類的成員屬性,方法叫做這個(gè)類的成員方法。 class 人成員屬性:姓名、性別、年齡、身高、體重、電話、家庭住址 成員方法:可以開(kāi)車(chē), 會(huì)說(shuō)英語(yǔ), 可以使用電腦屬性:通過(guò)在類定義中使用關(guān)鍵字" var "來(lái)聲明變量,即創(chuàng)建了類的屬性,雖然在聲明成員屬性的時(shí)候可以給定初值, 但是在聲明類的時(shí)候給成員屬性初使值是沒(méi)有必要的,比如說(shuō)要是把人的姓名賦上“張三”,那么用這個(gè)類實(shí)例出幾十個(gè)人,這幾十個(gè)人都叫張三了,所以沒(méi)有必要, 我們?cè)趯?shí)例出對(duì)象后給成員屬性初使值就可以了。如:var $somevar;方法(成員函數(shù)):通

12、過(guò)在類定義中聲明函數(shù),即創(chuàng)建了類的方法。如:function somefun(參數(shù)列表) . . <?phpclass Person/下面是人的成員屬性var $name; /人的名子var $sex; /人的性別var $age; /人的年齡/下面是人的成員方法function say() /這個(gè)人可以說(shuō)話的方法echo "這個(gè)人在說(shuō)話"function run() /這個(gè)人可以走路的方法echo "這個(gè)人在走路"?> 上面就是一個(gè)類的聲明, 從屬性和方法上聲明出來(lái)的一個(gè)類, 但是成員屬性最好在聲明的時(shí)候不要給初使的值, 因?yàn)槲覀冏龅娜诉@個(gè)

13、類是一個(gè)描述信息, 將來(lái)用它實(shí)例化對(duì)象, 比如實(shí)例化出來(lái)10個(gè)人對(duì)象, 那么這10個(gè)人, 每一個(gè)人的名子, 性別, 年齡都是不一樣的, 所以最好不要在這個(gè)地方給成員屬性賦初值, 而是對(duì)每個(gè)對(duì)象分別賦值的。用同樣的辦法可以做出你想要的類了, 只要你能用屬性和方法能描述出來(lái)的實(shí)體都可以定義成類, 去實(shí)例化對(duì)象。為了加強(qiáng)你對(duì)類的理解, 我們?cè)僮鲆粋€(gè)類, 做一個(gè)形狀的類, 形狀的范圍廣了點(diǎn), 我們就做個(gè)矩形吧, 先分析一下, 想一想從兩方面分析,矩形的屬性都有什么? 矩形的功能都有什么?class 矩形/矩形的屬性矩形的長(zhǎng); 矩形的寬;/矩形的方法矩形的周長(zhǎng);矩形的面積;<?phpclass R

14、ectvar $kuan;var $gao;function zhouChang()計(jì)算矩形的周長(zhǎng);function mianJi()計(jì)算矩形的面積;?> 如果用這個(gè)類來(lái)創(chuàng)建出多個(gè)矩形對(duì)象,每個(gè)矩形對(duì)象都有自己的長(zhǎng)和寬, 都可以求出自己的周長(zhǎng)和面積了。 類的聲明我們就到這里吧!5.如何實(shí)例化對(duì)象我們上面說(shuō)過(guò)面向?qū)ο蟪绦虻膯挝痪褪菍?duì)象,但對(duì)象又是通過(guò)類的實(shí)例化出來(lái)的,既然我們類會(huì)聲明了,下一步就是實(shí)例化對(duì)象了。當(dāng)定義好類后,我們使用new關(guān)鍵字來(lái)生成一個(gè)對(duì)象。 $對(duì)象名稱 = new 類名稱();<?phpclass Person/下面是人的成員屬性var $name; /人的名子v

15、ar $sex; /人的性別var $age; /人的年齡/下面是人的成員方法function say() /這個(gè)人可以說(shuō)話的方法echo "這個(gè)人在說(shuō)話"function run() /這個(gè)人可以走路的方法echo "這個(gè)人在走路"$p1=new Person();$p2=new Person();$p3=new Person();?>$p1=new Person();這條代碼就是通過(guò)類產(chǎn)生實(shí)例對(duì)象的過(guò)程,$p1就是我們實(shí)例出來(lái)的對(duì)象名稱, 同理,$p2, $p3也是我們實(shí)例出來(lái)的對(duì)象名稱,一個(gè)類可以實(shí)例出多個(gè)對(duì)象,每個(gè)對(duì)象都是獨(dú)立的,上面的代碼

16、相當(dāng)于實(shí)例出來(lái)3個(gè)人來(lái), 每個(gè)人之間是沒(méi)有聯(lián)系的, 只能說(shuō)明他們都是人類, 每個(gè)人都有自己的姓名, 性別和年齡的屬性,每個(gè)人都有說(shuō)話和走路的方法,只要是類里面體現(xiàn)出來(lái)的成員屬性和成員方法,實(shí)例化出來(lái)的對(duì)象里面就包含了這些屬性和方法。對(duì)像在PHP里面和整型、浮點(diǎn)型一樣,也是一種數(shù)據(jù)類,都是存儲(chǔ)不同類型數(shù)據(jù)用的,在運(yùn)行的時(shí)候都要加載到內(nèi)存中去用, 那么對(duì)象在內(nèi)存里面是怎么體現(xiàn)的呢??jī)?nèi)存從羅輯上說(shuō)大體上是分為4段, 棧空間段, 堆空間段,代碼段, 初使化靜態(tài)段,程序里面不同的聲明放在不同的內(nèi)存段里面,??臻g段是存儲(chǔ)占用相同空間長(zhǎng)度并且占用空間小的數(shù)據(jù)類型的地方,比如說(shuō)整型1, 10, 100, 10

17、00, 10000, 100000等等,在內(nèi)存里面占用空間是等長(zhǎng)的,都是64位4個(gè)字節(jié)。 那么數(shù)據(jù)長(zhǎng)度不定長(zhǎng),而且占有空間很大的數(shù)據(jù)類型的數(shù)據(jù)放在那內(nèi)存的那個(gè)段里面呢?這樣的數(shù)據(jù)是放在堆內(nèi)存里面的。棧內(nèi)存是可以直接存取的,而堆內(nèi)存是不可以直接存取的內(nèi)存。對(duì)于我們的對(duì)象來(lái)數(shù)就是一種大的數(shù)據(jù)類型而且是占用空間不定長(zhǎng)的類型,所以說(shuō)對(duì)象是放在堆里面的,但對(duì)象名稱是放在棧里面的,這樣通過(guò)對(duì)象名稱就可以使用對(duì)象了。 $p1=new Person();對(duì)于這個(gè)條代碼, $p1是對(duì)象名稱在棧內(nèi)存里面,new Person()是真正的對(duì)象是在堆內(nèi)存里面的,具體的請(qǐng)看下圖:從上圖可以看出$p1=new Perso

18、n();等號(hào)右邊是真正的對(duì)象實(shí)例, 在堆內(nèi)存里面的實(shí)體,上圖一共有3次new Person(),所以會(huì)在堆里面開(kāi)辟3個(gè)空間,產(chǎn)生3個(gè)實(shí)例對(duì)象,每個(gè)對(duì)象之間都是相互獨(dú)立的,使用自己的空間,在PHP里面,只要有一個(gè)new這個(gè)關(guān)鍵字出現(xiàn)就會(huì)實(shí)例化出來(lái)一個(gè)對(duì)象,在堆里面開(kāi)辟一塊自己的空間.每個(gè)在堆里面的實(shí)例對(duì)象是存儲(chǔ)屬性的,比如說(shuō),現(xiàn)在堆里面的實(shí)例對(duì)象里面都存有姓名、性別和年齡。每個(gè)屬性又都有一個(gè)地址。$p1=new Person();等號(hào)的右邊$p1是一個(gè)引用變量,通過(guò)賦值運(yùn)算符“=”把對(duì)象的首地址賦給“$p1“這個(gè)引用變量, 所以$p1是存儲(chǔ)對(duì)象首地址的變量,$p1放在棧內(nèi)存里邊,$p1相當(dāng)于一個(gè)

19、指針指向堆里面的對(duì)象, 所以我們可以通過(guò)$p1這個(gè)引用變量來(lái)操作對(duì)象, 通常我們也稱對(duì)象引用為對(duì)象。6.如何去使用對(duì)象中的成員上面看到PHP對(duì)象中的成員有兩種一種是成員屬性, 一種是成員方法。對(duì)象我們以經(jīng)可以聲明了,$p1=new Person(); 怎么去使用對(duì)象的成員呢?要想訪問(wèn)對(duì)象中的成員就要使用一個(gè)特殊的操作符”->”來(lái)完成對(duì)象成員的訪問(wèn):對(duì)象->屬性 $p1->name;$p2->age; $p3->sex;對(duì)象->方法 $p1->say();$p2->run();如下面實(shí)例:<?phpclass Person/下面是人的成員屬性

20、var $name; /人的名子var $sex; /人的性別var $age; /人的年齡/下面是人的成員方法function say() /這個(gè)人可以說(shuō)話的方法echo "這個(gè)人在說(shuō)話"function run() /這個(gè)人可以走路的方法echo "這個(gè)人在走路"$p1=new Person(); /創(chuàng)建實(shí)例對(duì)象$p1$p2=new Person(); /創(chuàng)建實(shí)例對(duì)象$p2$p3=new Person(); /創(chuàng)建實(shí)例對(duì)象$p3/下面三行是給$p1對(duì)象屬性賦值$p1->name=”張三”; $p1->sex=”男”;$p1->age

21、=20;/下面三行是訪問(wèn)$p1對(duì)象的屬性echo “p1對(duì)象的名子是:”.$p1->name.”<br>”;echo “p1對(duì)象的性別是:”.$p1->sex.”<br>”;echo “p1對(duì)象的年齡是:”.$p1->age.”<br>”;/下面兩行訪問(wèn)$p1對(duì)象中的方法$p1->say();$p1->run();/下面三行是給$p2對(duì)象屬性賦值$p2->name=”李四”;$p2->sex=”女”;$p2->age=30;/下面三行是訪問(wèn)$p2對(duì)象的屬性echo “p2對(duì)象的名子是:”.$p2->nam

22、e.”<br>”;echo “p2對(duì)象的性別是:”.$p2->sex.”<br>”;echo “p2對(duì)象的年齡是:”.$p2->age.”<br>”;/下面兩行訪問(wèn)$p2對(duì)象中的方法$p2->say();$p2->run();/下面三行是給$p3對(duì)象屬性賦值$p3->name=”王五”;$p3->sex=”男”;$p3->age=40;/下面三行是訪問(wèn)$p3對(duì)象的屬性echo “p3對(duì)象的名子是:”.$p3->name.”<br>”;echo “p3對(duì)象的性別是:”.$p3->sex.”<

23、;br>”;echo “p3對(duì)象的年齡是:”.$p3->age.”<br>”;/下面兩行訪問(wèn)$p3對(duì)象中的方法$p3->say();$p3->run();?>從上例中可以看出只是對(duì)象里面的成員就要使用對(duì)象->屬性 、對(duì)象->方法形式訪問(wèn),再?zèng)]有第二種方法來(lái)訪問(wèn)對(duì)象中的成員了。7.特殊的引用“$this“的使用現(xiàn)在我們知道了如何訪問(wèn)對(duì)象中的成員,是通過(guò)”對(duì)象->成員”的方式訪問(wèn)的,這是在對(duì)象的外部去訪問(wèn)對(duì)象中成員的形式, 那么如果我想在對(duì)象的內(nèi)部,讓對(duì)象里的方法訪問(wèn)本對(duì)象的屬性, 或是對(duì)象中的方法去調(diào)用本對(duì)象的其它方法這時(shí)我們?cè)趺崔k?因

24、為對(duì)象里面的所有的成員都要用對(duì)象來(lái)調(diào)用,包括對(duì)象的內(nèi)部成員之間的調(diào)用,所以在PHP里面給我提供了一個(gè)本對(duì)象的引用$this, 每個(gè)對(duì)象里面都有一個(gè)對(duì)象的引用$this來(lái)代表這個(gè)對(duì)象,完成對(duì)象內(nèi)部成員的調(diào)用, this的本意就是“這個(gè)”的意思, 上面的實(shí)例里面,我們實(shí)例化三個(gè)實(shí)例對(duì)象$P1、 $P2、 $P3,這三個(gè)對(duì)象里面各自存在一個(gè)$this分別代表對(duì)象$p1、$p2、$p3 。通過(guò)上圖我們可以看到,$this就是對(duì)象內(nèi)部代表這個(gè)對(duì)象的引用,在對(duì)象內(nèi)部和調(diào)用本對(duì)象的成員和對(duì)象外部調(diào)用對(duì)象的成員所使用的方式是一樣的。$this->屬性 $this->name;$this->a

25、ge; $this->sex;$this->方法 $this->say();$this->run();修改一下上面的實(shí)例,讓每個(gè)人都說(shuō)出自己的名字,性別和年齡:<?phpclass Person/下面是人的成員屬性var $name; /人的名子var $sex; /人的性別var $age; /人的年齡/下面是人的成員方法function say() /這個(gè)人可以說(shuō)話的方法echo "我的名子叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this-

26、>age."<br>"function run() /這個(gè)人可以走路的方法echo "這個(gè)人在走路"$p1=new Person(); /創(chuàng)建實(shí)例對(duì)象$p1$p2=new Person(); /創(chuàng)建實(shí)例對(duì)象$p2$p3=new Person(); /創(chuàng)建實(shí)例對(duì)象$p3/下面三行是給$p1對(duì)象屬性賦值$p1->name="張三" $p1->sex="男"$p1->age=20;/下面訪問(wèn)$p1對(duì)象中的說(shuō)話方法$p1->say();/下面三行是給$p2對(duì)象屬性賦值$p2->

27、;name="李四"$p2->sex="女"$p2->age=30;/下面訪問(wèn)$p2對(duì)象中的說(shuō)話方法$p2->say();/下面三行是給$p3對(duì)象屬性賦值$p3->name="王五"$p3->sex="男"$p3->age=40;/下面訪問(wèn)$p3對(duì)象中的說(shuō)話方法$p3->say();?>輸出結(jié)果為:我的名子叫:張三 性別:男 我的年齡是:20我的名子叫:李四 性別:女 我的年齡是:30我的名子叫:王五 性別:男 我的年齡是:40分析一下這個(gè)方法:function sa

28、y() /這個(gè)人可以說(shuō)話的方法echo "我的名子叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this->age."<br>"在$p1、$p2和$p3這三個(gè)對(duì)象中都有say()這個(gè)方法,$this分別代表這三個(gè)對(duì)象, 調(diào)用相應(yīng)的屬性,打印出屬性的值,這就是在對(duì)象內(nèi)部訪問(wèn)對(duì)象屬性的方式, 如果相在say()這個(gè)方里調(diào)用run()這個(gè)方法也是可以的,在say()這個(gè)方法中使用$this->run()的方式來(lái)完成調(diào)用。8.構(gòu)造方法與析構(gòu)方法

29、大多數(shù)類都有一種稱為構(gòu)造函數(shù)的特殊方法。當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),它將自動(dòng)調(diào)用構(gòu)造函數(shù),也就是使用new這個(gè)關(guān)鍵字來(lái)實(shí)例化對(duì)象的時(shí)候自動(dòng)調(diào)用構(gòu)造方法。 構(gòu)造函數(shù)的聲明與其它操作的聲明一樣,只是其名稱必須是_construct( )。這是PHP5中的變化,以前的版本中,構(gòu)造函數(shù)的名稱必須與類名相同,這種在PHP5中仍然可以用,但現(xiàn)在以經(jīng)很少有人用了,這樣做的好處是可以使構(gòu)造函數(shù)獨(dú)立于類名,當(dāng)類名發(fā)生改變時(shí)不需要改相應(yīng)的構(gòu)造函數(shù)名稱了。為了向下兼容,如果一個(gè)類中沒(méi)有名為_(kāi)construct( )的方法,PHP將搜索一個(gè)php4中的寫(xiě)法,與類名相同名的構(gòu)造方法。格式:function _construct

30、( 參數(shù) ) . . 在一個(gè)類中只能聲明一個(gè)構(gòu)造方法,而是只有在每次創(chuàng)建對(duì)象的時(shí)候都會(huì)去調(diào)用一次構(gòu)造方法,不能主動(dòng)的調(diào)用這個(gè)方法,所以通常用它執(zhí)行一些有用的初始化任務(wù)。比如對(duì)成屬性在創(chuàng)建對(duì)象的時(shí)候賦初值。<?/創(chuàng)建一個(gè)人類class Person/下面是人的成員屬性var $name; /人的名子var $sex; /人的性別var $age; /人的年齡/定義一個(gè)構(gòu)造方法參數(shù)為姓名$name、性別$sex和年齡$agefunction _construct($name, $sex, $age)/通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$name給成員屬性$this->name賦初使值$this-&g

31、t;name=$name;/通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$sex給成員屬性$this->sex賦初使值$this->sex=$sex;/通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$age給成員屬性$this->age賦初使值$this->age=$age;/這個(gè)人的說(shuō)話方法function say() echo "我的名子叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this->age."<br>"/通過(guò)構(gòu)造方法創(chuàng)建3個(gè)對(duì)象$p1、p2、$p3,分

32、別傳入三個(gè)不同的實(shí)參為姓名、性別和年齡$p1=new Person(“張三”,”男”, 20);$p2=new Person(“李四”,”女”, 30);$p3=new Person(“王五”,”男”, 40);/下面訪問(wèn)$p1對(duì)象中的說(shuō)話方法$p1->say();/下面訪問(wèn)$p2對(duì)象中的說(shuō)話方法$p2->say();/下面訪問(wèn)$p3對(duì)象中的說(shuō)話方法$p3->say();?>輸出結(jié)果為:我的名子叫:張三 性別:男 我的年齡是:20我的名子叫:李四 性別:女 我的年齡是:30我的名子叫:王五 性別:男 我的年齡是:40如圖:析構(gòu)函數(shù): 與構(gòu)造函數(shù)相對(duì)的就是析構(gòu)函數(shù)。析構(gòu)函

33、數(shù)是PHP5新添加的內(nèi)容,在PHP4中沒(méi)有析構(gòu)函數(shù)。析構(gòu)函數(shù)允許在銷(xiāo)毀一個(gè)類之前執(zhí)行的一些操作或完成一些功能,比如說(shuō)關(guān)閉文件, 釋放結(jié)果集等,析構(gòu)函數(shù)會(huì)在到某個(gè)對(duì)象的所有引用都被刪除或者當(dāng)對(duì)象被顯式銷(xiāo)毀時(shí)執(zhí)行,也就是對(duì)象在內(nèi)存中被銷(xiāo)毀前調(diào)用析構(gòu)函數(shù)。與構(gòu)造函數(shù)的名稱類似,一個(gè)類的析構(gòu)函數(shù)名稱必須是_destruct( )。析構(gòu)函數(shù)不能帶有任何參數(shù)。格式:function _destruct ( ) . . <?/創(chuàng)建一個(gè)人類class Person/下面是人的成員屬性var $name; /人的名子var $sex; /人的性別var $age; /人的年齡/定義一個(gè)構(gòu)造方法參數(shù)為姓名$

34、name、性別$sex和年齡$agefunction _construct($name, $sex, $age)/通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$name給成員屬性$this->name賦初使值$this->name=$name;/通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$sex給成員屬性$this->sex賦初使值$this->sex=$sex;/通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$age給成員屬性$this->age賦初使值$this->age=$age;/這個(gè)人的說(shuō)話方法function say() echo "我的名子叫:".$this->name." 性別

35、:".$this->sex." 我的年齡是:".$this->age."<br>"/這是一個(gè)析構(gòu)函數(shù),在對(duì)象銷(xiāo)毀前調(diào)用function _destruct()echo “再見(jiàn)”.$this->name.”<br>”;/通過(guò)構(gòu)造方法創(chuàng)建3個(gè)對(duì)象$p1、p2、$p3,分別傳入三個(gè)不同的實(shí)參為姓名、性別和年齡$p1=new Person(“張三”,”男”, 20);$p2=new Person(“李四”,”女”, 30);$p3=new Person(“王五”,”男”, 40);/下面訪問(wèn)$p1對(duì)象中的說(shuō)話方

36、法$p1->say();/下面訪問(wèn)$p2對(duì)象中的說(shuō)話方法$p2->say();/下面訪問(wèn)$p3對(duì)象中的說(shuō)話方法$p3->say();?>輸出結(jié)果為:我的名子叫:張三 性別:男 我的年齡是:20我的名子叫:李四 性別:女 我的年齡是:30我的名子叫:王五 性別:男 我的年齡是:40再見(jiàn)張三再見(jiàn)李四再見(jiàn)王五9.封裝性/2009年4月9日封裝性是面象對(duì)象編程中的三大特性之一,封裝性就是把對(duì)象的屬性和服務(wù)結(jié)合成一個(gè)獨(dú)立的相同單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié),包含兩個(gè)含義:1.把對(duì)象的全部屬性和全部服務(wù)結(jié)合在一起,形成一個(gè)不可分割的獨(dú)立單位(即對(duì)象)。2.信息隱蔽,即盡可能隱蔽對(duì)

37、象的內(nèi)部細(xì)節(jié),對(duì)外形成一個(gè)邊界或者說(shuō)形成一道屏障,只保留有限的對(duì)外接口使之與外部發(fā)生聯(lián)系。 封裝的原則在軟件上的反映是:要求使對(duì)象以外的部分不能隨意存取對(duì)象的內(nèi)部數(shù)據(jù)(屬性),從而有效的避免了外部錯(cuò)誤對(duì)它的"交叉感染",使軟件錯(cuò)誤能夠局部化,大大減少查錯(cuò)和排錯(cuò)的難度。用個(gè)實(shí)例來(lái)說(shuō)明吧, 假如某個(gè)人的對(duì)象中有年齡和工資等屬性,像這樣個(gè)人隱私的屬性是不想讓其它人隨意就能獲得到的,如果你不使用封裝,那么別人想知道就能得到,但是如果你封裝上之后別人就沒(méi)有辦法獲得封裝的屬性, 除非你自己把它說(shuō)出去,否則別人沒(méi)有辦法得到。在比如說(shuō),個(gè)人電腦都有一個(gè)密碼,不想讓其它人隨意的登陸,在你電腦

38、里面拷貝和粘貼。還有就是像人這個(gè)對(duì)象, 身高和年齡的屬性, 只能是自己來(lái)增漲,不可以讓別人隨意的賦值等等。使用private這個(gè)關(guān)鍵字來(lái)對(duì)屬性和方法進(jìn)行封裝:原來(lái)的成員:var $name;/聲明人的姓名var $sex;/聲明人的性別var $age;/聲明人的年齡function run().改成封裝的形式:private $name; /把人的姓名使用private關(guān)鍵字進(jìn)行封裝private $sex;/把人的性別使用private關(guān)鍵字進(jìn)行封裝private $age;/把人的年齡使用private關(guān)鍵字進(jìn)行封裝private function run()/把人的走路方法使用priv

39、ate關(guān)鍵字進(jìn)行封裝注意:只要是成員屬性前面有其它的關(guān)鍵字就要去掉原有的關(guān)鍵字”var”.通過(guò)private就可以把人的成員(成員屬性和成員方法)封裝上了。封裝上的成員就不能被類外面直接訪問(wèn)了,只有對(duì)象內(nèi)部自己可以訪問(wèn);下面的代碼會(huì)產(chǎn)生錯(cuò)誤:class Person/下面是人的成員屬性private $name; /人的名子,被private封裝上了private $sex; /人的性別, 被private封裝上了private $age; /人的年齡, 被private封裝上了/這個(gè)人可以說(shuō)話的方法function say() echo "我的名子叫:".$this-&g

40、t;name." 性別:".$this->sex." 我的年齡是:".$this->age."<br>"/這個(gè)人可以走路的方法, 被private封裝上了private function run() echo "這個(gè)人在走路"/實(shí)例化一個(gè)人的實(shí)例對(duì)象$p1=new Person();/試圖去給私有的屬性賦值, 結(jié)果會(huì)發(fā)生錯(cuò)誤$p1->name="張三"$p1->sex="男"$p1->age=20;/試圖去打印私有的屬性, 結(jié)果會(huì)發(fā)生

41、錯(cuò)誤echo $p1->name.”<br>”;echo $p1->sex.”<br>”;echo $p1->age.”<br>”/試圖去打印私有的成員方法, 結(jié)果會(huì)發(fā)生錯(cuò)誤$p1->run();?>輸出結(jié)果為:Fatal error: Cannot access private property Person:$nameFatal error: Cannot access private property Person:$sexFatal error: Cannot access private property Person

42、:$ageFatal error: Cannot access private property Person:$nameFatal error: Call to private method Person:run() from context ''從上面的實(shí)例可以看到, 私有的成員是不能被外部訪問(wèn)的, 因?yàn)樗接谐蓡T只能在本對(duì)象內(nèi)部自己訪問(wèn),比如,$p1這個(gè)對(duì)象自己想把他的私有屬性說(shuō)出去,在say()這個(gè)方法里面訪問(wèn)了私有屬性,這樣是可以。(沒(méi)有加任何訪問(wèn)控制,默認(rèn)的是public的,任何地方都可以訪問(wèn))/這個(gè)人可以說(shuō)話的方法, 說(shuō)出自己的私有屬性,在這里也可以訪問(wèn)私有方法fu

43、nction say() echo "我的名子叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this->age."<br>"/在這里也可以訪問(wèn)私有方法/$this->run();因?yàn)槌蓡T方法say()是公有的, 所以我們?cè)陬惖耐獠空{(diào)用say()方法是可以的,改變上面的代碼;class Person/下面是人的成員屬性private $name; /人的名子,被private封裝上了private $sex; /人的性別, 被privat

44、e封裝上了private $age; /人的年齡, 被private封裝上了/定義一個(gè)構(gòu)造方法參數(shù)為私有的屬性姓名$name、性別$sex和年齡$age進(jìn)行賦值function _construct($name, $sex, $age)/通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$name給私有成員屬性$this->name賦初使值$this->name=$name;/通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$sex給私有成員屬性$this->sex賦初使值$this->sex=$sex;/通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$age給私有成員屬性$this->age賦初使值$this->age=$age;/這個(gè)人

45、可以說(shuō)話的方法, 說(shuō)出自己的私有屬性,在這里也可以訪問(wèn)私有方法function say() echo "我的名子叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this->age."<br>"/通過(guò)構(gòu)造方法創(chuàng)建3個(gè)對(duì)象$p1、p2、$p3,分別傳入三個(gè)不同的實(shí)參為姓名、性別和年齡$p1=new Person(“張三”,”男”, 20);$p2=new Person(“李四”,”女”, 30);$p3=new Person(“王五”,”男”, 4

46、0);/下面訪問(wèn)$p1對(duì)象中的說(shuō)話方法$p1->say();/下面訪問(wèn)$p2對(duì)象中的說(shuō)話方法$p2->say();/下面訪問(wèn)$p3對(duì)象中的說(shuō)話方法$p3->say();?>輸出結(jié)果為:我的名子叫:張三 性別:男 我的年齡是:20我的名子叫:李四 性別:女 我的年齡是:30我的名子叫:王五 性別:男 我的年齡是:40因?yàn)闃?gòu)造方法是默認(rèn)的公有方法(構(gòu)造方法不要設(shè)置成私有的),所以在類的外面可以訪問(wèn)到,這樣就可以使用構(gòu)造方法創(chuàng)建對(duì)象, 另外構(gòu)造方法也是類里面的函數(shù),所以可以用構(gòu)造方法給私有的屬性賦初值。Say()的方法是默認(rèn)公有的, 所以在外面也可以訪問(wèn)的到, 說(shuō)出他自己的私

47、有屬性。從上面的例子中我們可以看到, 私有的成員只能在類的內(nèi)部使用, 不能被類外部直接來(lái)存取, 但是在類的內(nèi)部是有權(quán)限訪問(wèn)的, 所以有時(shí)候我們需要在類的外面給私有屬性賦值和讀取出來(lái),也就是給類的外部提供一些可以存取的接口,上例中構(gòu)造方法就是一種賦值的形式, 但是構(gòu)造方法只是在創(chuàng)建對(duì)象的時(shí)候賦值,如果我們已經(jīng)有一個(gè)存在的對(duì)象了,想對(duì)這個(gè)存在的對(duì)象賦值, 這個(gè)時(shí)候,如果你還使用構(gòu)造方法傳值的形式傳值, 那么就創(chuàng)建了一個(gè)新的對(duì)象,并不是這個(gè)已存在的對(duì)象了。所以我們要對(duì)私有的屬性做一些可以被外部存取的接口,目的就是可以在對(duì)象存在的情況下,改變和存取屬性的值,但要注意,只有需要讓外部改變的屬性才這樣做,

48、不想讓外面訪問(wèn)的屬性是不做這樣的接口的,這樣就能達(dá)到封裝的目的,所有的功能都是對(duì)象自己來(lái)完成,給外面提供盡量少的操作。如果給類外部提供接口,可以為私有屬性在類外部提供設(shè)置方法和獲取方法,來(lái)操作私有屬性.例如:prvate $age; /私有的屬性年齡function setAge($age) /為外部提供一個(gè)公有設(shè)置年齡的方法if($age<0 | $age>130) /在給屬性賦值的時(shí)候,為了避免非法值設(shè)置給屬性return;$this->age=$age;function getAge()/為外部提供一個(gè)公有獲取年齡的方法return($this->age);上面的

49、方法是為一個(gè)成員屬性設(shè)置和獲取值, 當(dāng)然你也可以為每個(gè)屬性用同樣的方法對(duì)其進(jìn)行賦值和取值的操作,完成在類外部的存取工作。10._set() _get() _isset() _unset()四個(gè)方法的應(yīng)用一般來(lái)說(shuō),總是把類的屬性定義為private,這更符合現(xiàn)實(shí)的邏輯。但是, 對(duì)屬性的讀取和賦值操作是非常頻繁的,因此在PHP5中,預(yù)定義了兩個(gè)函數(shù)”_get()”和”_set()”來(lái)獲取和賦值其屬性,以及檢查屬性的”_isset()”和刪除屬性的方法”_unset()”。上一節(jié)中,我們?yōu)槊總€(gè)屬性做了設(shè)置和獲取的方法,在PHP5中給我們提供了專門(mén)為屬性設(shè)置值和獲取值的方法,”_set()”和“_ge

50、t()”這兩個(gè)方法,這兩個(gè)方法不是默認(rèn)存在的, 而是我們手工添加到類里面去的,像構(gòu)造方法(_construct()一樣, 類里面添加了才會(huì)存在,可以按下面的方式來(lái)添加這兩個(gè)方法,當(dāng)然也可以按個(gè)人的風(fēng)格來(lái)添加:/_get()方法用來(lái)獲取私有屬性function _get($property_name) if(isset($this->$property_name) return($this->$property_name); else return(NULL); /_set()方法用來(lái)設(shè)置私有屬性function _set($property_name, $value) $this-

51、>$property_name = $value; _get()方法:這個(gè)方法用來(lái)獲取私有成員屬性值的,有一個(gè)參數(shù), 參數(shù)傳入你要獲取的成員屬性的名稱,返回獲取的屬性值, 這個(gè)方法不用我們手工的去調(diào)用, 是在直接獲取私有屬性的時(shí)候自動(dòng)調(diào)用的。因?yàn)樗接袑傩砸呀?jīng)被封裝上了,是不能直接獲取值的(比如:”echo $p1->name” 這樣直接獲取是錯(cuò)誤的),但是如果你在類里面加上了這個(gè)方法,在使用”echo $p1->name” 這樣的語(yǔ)句直接獲取值的時(shí)候就會(huì)自動(dòng)調(diào)用_get($property_name)方法,將屬性name傳給參數(shù)$property_name,通過(guò)這個(gè)方法的內(nèi)部

52、執(zhí)行,返回我們傳入的私有屬性的值。 _set()方法:這個(gè)方法用來(lái)為私有成員屬性設(shè)置值的,有兩個(gè)參數(shù),第一個(gè)參數(shù)為你要為設(shè)置值的屬性名,第二個(gè)參數(shù)是要給屬性設(shè)置的值,沒(méi)有返回值。這個(gè)方法同樣不用我們手工去調(diào)用,是在直接設(shè)置私有屬性值的時(shí)候自動(dòng)調(diào)用的,同樣屬性私有的已經(jīng)被封裝上了, 如果沒(méi)有_set()這個(gè)方法,是不允許的, 比如:”$this->name=zhangsan , 這樣會(huì)出錯(cuò),但是如果你在類里面加上了_set($property_name, $value)這個(gè)方法,在直接給私有屬性賦值的時(shí)候,就會(huì)自動(dòng)調(diào)用它,把屬性比如name傳給$property_name, 把要賦的值”z

53、hangsan”傳給$value,通過(guò)這個(gè)方法的執(zhí)行,達(dá)到賦值的目的, 為了不傳入非法的值, 還可以在這個(gè)方法給做一下判斷。代碼如下:<?phpclass Person/下面是人的成員屬性, 都是封裝的私有成員private $name; /人的名子private $sex; /人的性別private $age; /人的年齡/_get()方法用來(lái)獲取私有屬性function _get($property_name) echo "在直接獲取私有屬性值的時(shí)候,自動(dòng)調(diào)用了這個(gè)_get()方法<br>" if(isset($this->$property_n

54、ame) return($this->$property_name); else return(NULL); /_set()方法用來(lái)設(shè)置私有屬性function _set($property_name, $value) echo "在直接設(shè)置私有屬性值的時(shí)候,自動(dòng)調(diào)用了這個(gè)_set()方法為私有屬性賦值<br>"$this->$property_name = $value; $p1=new Person();/直接為私有屬性賦值的操作, 會(huì)自動(dòng)調(diào)用_set()方法進(jìn)行賦值$p1->name="張三"$p1->sex=&

55、quot;男"$p1->age=20;/直接獲取私有屬性的值, 會(huì)自動(dòng)調(diào)用_get()方法,返回成員屬性的值echo "姓名:".$p1->name."<br>"echo "性別:".$p1->sex."<br>"echo "年齡:".$p1->age."<br>"?>程序執(zhí)行結(jié)果:在直接設(shè)置私有屬性值的時(shí)候, 自動(dòng)調(diào)用了這個(gè)_set()方法為私有屬性賦值在直接設(shè)置私有屬性值的時(shí)候, 自動(dòng)調(diào)用了這個(gè)_set()方法為私有屬性賦值在直接設(shè)置私有屬性值的時(shí)候, 自動(dòng)調(diào)用了這個(gè)_set()方法為私有屬性賦值在直接獲取私有屬性值的時(shí)候,自動(dòng)調(diào)用了這個(gè)_get()方法姓名:張三在直接獲取私有屬性值的時(shí)候,自動(dòng)調(diào)用了這個(gè)_get()方法性別:男在直接獲取私有屬性值的時(shí)候,自動(dòng)調(diào)用了這個(gè)_get()方法年齡:20以上代碼如果不加上_get()和_set()方法,程序就會(huì)出錯(cuò),因?yàn)椴荒茉陬惖耐獠坎僮魉接谐蓡T,而上面的代碼是通過(guò)自動(dòng)調(diào)用_ge

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論