面向?qū)ο笤创a筆記模版day4php_第1頁(yè)
面向?qū)ο笤创a筆記模版day4php_第2頁(yè)
面向?qū)ο笤创a筆記模版day4php_第3頁(yè)
面向?qū)ο笤创a筆記模版day4php_第4頁(yè)
面向?qū)ο笤创a筆記模版day4php_第5頁(yè)
已閱讀5頁(yè),還剩153頁(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)介

PHP面向?qū)ο缶幊?PHP是同時(shí)支持面向?qū)ο蠛兔嫦蜻^(guò)程的編程語(yǔ)言!傳統(tǒng)的面向過(guò)程的編程思想總結(jié)起來(lái)就八個(gè)字——自頂向下,逐步細(xì)化大家以來(lái)播客報(bào)名學(xué)習(xí)這件事情,可以分成哪些步驟insertinto登記表 等學(xué)生信息updateupdate學(xué)生表set班級(jí)第二步:學(xué)生繳費(fèi),update學(xué)生表Money減少,更改繳費(fèi)字段狀態(tài)update機(jī)構(gòu)表Money增加、提出提供繳獲得分配增加比如一個(gè)人的屬性有:身高、體重、三圍、、、學(xué)歷、 一個(gè)的屬性有:價(jià)格、品牌、操作系統(tǒng)、顏色、尺寸等屬性 、學(xué)歷、話、Money金額等功能(能做什么):屬性 、學(xué)歷、話、Money金額、工號(hào)等功能(能做什么):功能(能做什么):功能(能做什么):教師、 、能發(fā)工Money功能(能做什么):等學(xué)生教師班級(jí)所以,面向?qū)ο笏?,面向?qū)ο?思想是123,從前期開發(fā)的角度來(lái)看面向?qū)ο蟊让嫦蜻^(guò)程要更復(fù)雜但是從和擴(kuò)展的角度來(lái)看,42對(duì)象,objectOOPPHP中,采用類(class)類其實(shí)就是得到對(duì)象的法而已!只不過(guò)大部分面向?qū)ο蟮恼Z(yǔ)言都是通過(guò)來(lái)產(chǎn)生對(duì)象,phpPHP中,要想得到對(duì)象,必須先有所以,OOP中的對(duì)象也都應(yīng)該有一個(gè)類!寫代碼,會(huì)教書;另一個(gè)對(duì)象(人類)可能叫,女,會(huì)演戲,會(huì)唱歌!class(((屬性(變量方法(函數(shù)類常量(常量12,需要對(duì)成員(屬性和方法)一下才可以使用private,定義方法的時(shí)候,可以省略控制修飾符,默認(rèn)為publicvarnew來(lái)完成的!對(duì)象如何(操作)其中的成員呢?利用箭頭來(lái)! 無(wú)論在任何地方(包括類內(nèi)和類外)對(duì)象的成員,都應(yīng)該先找到該對(duì)象才行3$this$this4OOP5new一個(gè)對(duì)initnew在實(shí)例化一個(gè)對(duì)象的時(shí)候,PHP系統(tǒng)會(huì)自動(dòng)的調(diào)用一個(gè)名字叫作construct()的方法,我們init改名為construct注意:PHP早期的版本中,構(gòu)造方法有一個(gè)比較老的語(yǔ)法,就是使用于類名同名方法作當(dāng)兩個(gè)構(gòu)造方法同時(shí)存在的時(shí)候,真正起作用的是construct方法!6是在一個(gè)對(duì)象“”的時(shí)候由系統(tǒng)自動(dòng)調(diào)用的!析構(gòu)方法的名字叫destruct()1應(yīng)該是在對(duì)象銷毀之前調(diào)用的,也就是在對(duì)象即將還未的時(shí)候調(diào)用!因?yàn)槲鰳?gòu)方法中的$this還可以使用!2,對(duì)象有幾種情況unset改變對(duì)象變量的值的時(shí)候,該對(duì)象也會(huì)有一個(gè)常見的刪除一個(gè)對(duì)象的方法:$對(duì)象變量123PHP7也就是對(duì)象間的賦值或!__cloneStudent類中的一個(gè)實(shí)例呢?instanceof運(yùn)算符來(lái)進(jìn)行判斷!instanceof8MySQLDBMySQLDB類,該類可以當(dāng)成一個(gè)工具類13MySQLDB是該類的名字,class(定義相關(guān)的類,類就是實(shí)體(對(duì)象)實(shí)例化出相關(guān)的對(duì)象(實(shí)體對(duì)象成員的符:-三,方法中的$this是一個(gè)偽對(duì)象,代表當(dāng)前對(duì)象(誰(shuí)調(diào)用這個(gè)方法誰(shuí)就是當(dāng)前對(duì)象類和對(duì)象的形式:屬性由對(duì)象來(lái)管理,方法由類來(lái)管理OOP完成報(bào)名過(guò)程新對(duì)象進(jìn)行初始化操作,construct()構(gòu)方法釋放該對(duì)象所占用的額源對(duì)象的值傳遞和傳遞效果是完全一樣clone八,MySQLDB第9 所以,我們應(yīng)該由類來(lái)或操作靜態(tài)成員,因?yàn)樗械膶?duì)象都屬于某個(gè)類!static既然靜態(tài)屬性由類來(lái)進(jìn)行管理,所以也應(yīng)該由類來(lái)進(jìn)行,語(yǔ)法形式為:self如果是在某一個(gè)類的內(nèi)部,靜態(tài)成員的時(shí)候,可以使用關(guān)鍵字self來(lái)代替當(dāng)前的類名self10也是所有的對(duì)象所共享的方法也是由類來(lái)進(jìn)行管理也是在的時(shí)候增加static關(guān)鍵字TestTest因?yàn)殪o態(tài)方法和非靜態(tài)方法在內(nèi)存的機(jī)制其實(shí)是一樣的也就導(dǎo)致了二者之間其實(shí)并有太大的本質(zhì)上的區(qū)別?。o(wú)論采用什么方式調(diào)用靜態(tài)方法,都不可以使用$this關(guān)鍵字!因?yàn)?this本身就體現(xiàn)了各個(gè)對(duì)象“獨(dú)自占用”方法的含義!也就是說(shuō),如果想使用$this關(guān)鍵字,只能用非靜態(tài)方法!那就是類調(diào)用靜態(tài)方法,由對(duì)象調(diào)用非靜態(tài)方法!切記11const來(lái)定義!const=值5它們?cè)趦?nèi)存中的機(jī)制如下1212PHP在執(zhí)行的時(shí)候,如果發(fā)現(xiàn)需要一個(gè)類(只要是和這個(gè)類相關(guān)的任何的操作個(gè)名字叫作autoload($class_name)函數(shù),調(diào)用的時(shí)候,會(huì)給該函數(shù)傳遞一個(gè)參數(shù),該參數(shù)一般的,系統(tǒng)默認(rèn)的自動(dòng)加載函數(shù)就是autoload(),但是隨著項(xiàng)目規(guī)模的擴(kuò)大,有可能出f11,一定要發(fā)生在需要某個(gè)類之前2,可以多個(gè)自動(dòng)加載函數(shù),在載入成功之前,會(huì)依次的按 f1f2f3f3f2,f2依然沒(méi)有f1,最后才找到:3autoload函數(shù)就失效了!如果想繼續(xù)生效,需要重新!現(xiàn)在,我們需要將上面的autoload方法成自動(dòng)加載方法此時(shí),該靜態(tài)方法的參數(shù)形式為:此外,靜態(tài)方法的時(shí)候,還有一個(gè)更加簡(jiǎn)單的語(yǔ)法形式,參數(shù)可以直接寫為13序列化主要解決數(shù)據(jù)的持久化的問(wèn)題對(duì)象也是一種數(shù)據(jù)類型,既然是數(shù)據(jù),就也存在被持久化的問(wèn)題當(dāng)PHP運(yùn)行結(jié)束之后,所有的資源都會(huì),其中自然包括內(nèi)存中的數(shù)據(jù),如果想實(shí)現(xiàn)數(shù)據(jù)的持久化,就應(yīng)該在運(yùn)行結(jié)束之前進(jìn)行持久化!,的自動(dòng)轉(zhuǎn)換,也就是說(shuō),只要當(dāng)初保存的數(shù)據(jù)不是字符串類型的時(shí)候都有可能出現(xiàn)問(wèn),為什么反序列化之后類名變成 在對(duì)象的中引入相關(guān)的類文件就行了link屬性(原始保存的是數(shù)據(jù)庫(kù)的連接資源) MySQLDB.class.php: 14 黃種OOP代碼中,也一樣要體現(xiàn)出類與類之間的共性與個(gè)性關(guān)系,我們就是通過(guò)ABAB類,同時(shí)OOP中的代碼重用的特性!此時(shí),BookPhoneGoods類所定義的所有的成員信息!這里的成員信息就此時(shí),上面的$b是不是Goods類實(shí)例化出來(lái)的對(duì)象呢?比如:BAAB類!擴(kuò)展:(C++在在Book類中沒(méi)找到showName()再?gòu)腂ookBook15override此時(shí)通過(guò)子類實(shí)例化出來(lái)的對(duì)象相關(guān)成員的時(shí)候真正其作用的是子類中定義的成員showName方法還在不在?調(diào)用調(diào)用showName()Book就不會(huì)繼續(xù)往其父類查找了!父類名::2parentparentparentstaticselfstatic方法:類名::靜態(tài)方法名可以使用類來(lái)靜態(tài)方法和非靜態(tài)方法也可以使用對(duì)象來(lái)靜態(tài)方法和了二者之間的區(qū)別在語(yǔ)法上只有一個(gè),那就是靜態(tài)方法中不能使用$this關(guān)鍵定義方式:const=值調(diào)用方式:類名::類的5個(gè)成員在內(nèi)存中的機(jī)制系統(tǒng)默認(rèn)的自動(dòng)加載函數(shù)第二步:將這個(gè)普通函數(shù)成類文件的自動(dòng)加載函數(shù),使對(duì)象在序列化的時(shí)候應(yīng)該指定需要被序列化的屬性,通過(guò)魔術(shù)方法sleepwakeup來(lái)實(shí)現(xiàn)的繼承的本質(zhì)不是將父類的代碼到子類而是通過(guò)繼承鏈條找到相應(yīng)的父類成員名::parent關(guān)鍵字來(lái)代替!第16講控制修飾所謂的控制修飾符,主要作用是控制類的成員(屬性和方法,不包括類常量,在哪些地方可以被,在哪些地方不可以被的一種機(jī)制!在在PHP中,一共有三 范圍的概念所以所以 控制修飾符也一共有三個(gè)public:公共的,當(dāng)前類內(nèi),繼承鏈類內(nèi)和類外都可以被到思考:如何選擇控制修飾符1,當(dāng)子類重寫父類成員的時(shí)候,子類的控制修飾符不能低于父類的控制修飾的訪父類 父類 子類:可以是public也可以是217MySQLDBMySQLDBMySQLDB18final產(chǎn)生了兩個(gè)產(chǎn)生了兩個(gè) finalfinalfinal所以,final另外,finalfinal關(guān)鍵字!此時(shí),該方法就是最終方法!第19 妖怪類:概念太模糊,也很抽象! 來(lái)一個(gè)類為抽象類,此時(shí),該抽象類中應(yīng)該具有抽象方法!多 1220interfacePHP中定義一個(gè)接口,其實(shí)就是一種純粹的規(guī)范或規(guī)定,規(guī)定該接口的下級(jí)類必須要實(shí)接口常量:抽象方法:必須為public(與抽象類不同,抽象類還可以為interface來(lái)定義的:I開頭!1,接口中的抽象方法不需要寫 他的普通成員,只能有抽象方法不能有普通方法,所以不會(huì)!2implements當(dāng)一個(gè)類“實(shí)現(xiàn)”一個(gè)當(dāng)一個(gè)類“實(shí)現(xiàn)”一個(gè) ,也只有兩種選擇結(jié)構(gòu),但是接口中的抽象方法必須為public型!2PHP不支持多繼承,但是支持多實(shí)現(xiàn),也就是說(shuō),一個(gè)類可以同時(shí)“實(shí)現(xiàn)”多個(gè)接口!21overloadPHPPHP指的是對(duì)不可的成員的處理方式,稱之為成員的重載這里的不這里的不 有兩種情況12,該成員存在,但是受控制的限制(比如為private,類外就不可當(dāng)然,以上只是系統(tǒng)默認(rèn)的行為,php對(duì)不可的成員的時(shí)候,是可以采取相關(guān)的操22(上就是當(dāng)一個(gè)不可的屬性的時(shí)候的一種處理機(jī)制PHP44當(dāng)為不可的屬性賦值的時(shí)候當(dāng)獲取不可的屬性的值的時(shí)候當(dāng)刪除一個(gè)不可的屬性的時(shí)

當(dāng)判斷一個(gè)不可的屬性是否存在的時(shí)

一旦加入set方法,當(dāng)為一個(gè)不可的屬性賦值的時(shí)候,處理權(quán)就交給用戶自己了!一個(gè)是該不可的屬性的名字一個(gè)是為該不可的屬性賦的值122行代碼只是觸發(fā)了set222行代碼的賦值操作有沒(méi)有成功?沒(méi)有,因?yàn)閟et方法什么都沒(méi)做!一旦加入了get()方法,對(duì)不可的屬性賦值的時(shí)候,就會(huì)觸發(fā)該魔術(shù)方法的自動(dòng)執(zhí)行,在實(shí)際的應(yīng)用中,set和get往往是成對(duì)出現(xiàn)的,往往利用它們批量的對(duì)對(duì)象的私有屬性23(下一般來(lái)說(shuō),當(dāng)刪除一個(gè)不可的私有屬性的時(shí)候,系統(tǒng)默認(rèn)的行為是報(bào)錯(cuò)但是一旦加入了unset方法,則當(dāng)刪除一個(gè)不可的屬性的時(shí)候,會(huì)自動(dòng)觸發(fā)該方法的該魔術(shù)方法同樣需要一個(gè)參數(shù),就是這個(gè)不可的屬性的名字當(dāng)判斷一個(gè)不可的屬性是否存在的時(shí)候,會(huì)自動(dòng)觸發(fā)該方法的執(zhí)行24處理不可的方法的一種機(jī)制當(dāng)調(diào)用一個(gè)不可的非靜態(tài)方法(對(duì)象方法)的時(shí)候,會(huì)自動(dòng)觸發(fā)該方法的執(zhí)行!方法名:string12當(dāng)調(diào)用一個(gè)不可的靜態(tài)方法(類方法)的時(shí)候,會(huì)自動(dòng)觸發(fā)該魔術(shù)方法的執(zhí)行!參數(shù)的形式和call是一樣的!f1:112233一、控制修飾符:就是控制類的成員在哪可以在哪不能的一種機(jī)protected:受保護(hù)的,當(dāng)前類內(nèi)和繼承鏈類內(nèi)可以,類外不能當(dāng)子類重寫父類成員的時(shí)候子類的控制權(quán)限不應(yīng)該低于父類的控制權(quán)MySQLDB僅可能的將其成員三、final類和最終方法 五、interface需要使用關(guān)鍵字PHP不支持多繼承,但是支持多實(shí)現(xiàn),也就是一個(gè)類可以同時(shí)實(shí)現(xiàn)多個(gè)接口六、overload重載25autoload 回顧一回顧一 函數(shù)之所以函數(shù)的調(diào)用形式是將一個(gè)對(duì)象當(dāng)成一個(gè)函數(shù)來(lái)調(diào)用那是因?yàn)殚]包對(duì)象里面就 此時(shí),可以定義toString魔術(shù)常量: 要注意其與self的區(qū)別self是指該類本(類是一種結(jié)構(gòu)是有機(jī)的一個(gè)整體而CLASS 還有一個(gè)魔術(shù)常量:FUNCTION261,$this是不是代表當(dāng)前代碼所在類直接實(shí)例化出來(lái)的對(duì)象不是,$this代表當(dāng)前對(duì)象,而當(dāng)前對(duì)象不一定是其代碼所在的類直接實(shí)例化出來(lái)的對(duì)象,所以,$this要根據(jù)執(zhí)行環(huán)境來(lái)決定,也是執(zhí)行上下文!2,self是不是代表其當(dāng)前代碼所在的類的類名?showIDBook類來(lái)調(diào)用的,從業(yè)務(wù)邏輯上來(lái)說(shuō),代碼執(zhí)行的時(shí)候,selfBook類才對(duì)!所以,為了解決上面的問(wèn)題,PHP又增加了一個(gè)可以代表“當(dāng)前類”的一個(gè)關(guān)鍵字!1self2(綁定“當(dāng)前類”的時(shí)機(jī)就不應(yīng)該發(fā)生在代碼的預(yù)編譯階段,而應(yīng)該發(fā)生在代碼staticstatic關(guān)鍵字的意義:123,代表“當(dāng)前類,不過(guò),綁定當(dāng)前類的實(shí)際,推后期代碼執(zhí)行階段的時(shí)27我們無(wú)法用戶去new對(duì)象,只能讓用戶new對(duì)象的時(shí)候不生效!new所以,我們只需要構(gòu)造方法即可1因?yàn)榇藭r(shí)還不存在任何的對(duì)象,只能由類來(lái)這個(gè)方法2因?yàn)檫@個(gè)方法本來(lái)就是需要在類行調(diào)用以得到一個(gè)對(duì)象n次調(diào)用這個(gè)方法的時(shí)候,返回剛才第一次實(shí)例化出來(lái)的對(duì)象12因?yàn)槟壳斑€是只能由類來(lái)方法這個(gè)屬性(因?yàn)檫€沒(méi)有對(duì)象由于在克隆的時(shí)候需要觸發(fā)clone

__clone以上,就是實(shí)現(xiàn)單例模式的典型的方法,也叫作“三私一公28MySQLDBMySQLDB293031如果現(xiàn)在想遍歷的是$stupartner屬性(也是一個(gè)數(shù)組,應(yīng)該怎么辦?foreach51reset23current4key,nextforeachforeach是為值變量$valuecurrent(數(shù)組名為鍵變量$keykey(數(shù)組名next(數(shù)組名foreach(就是對(duì)值變量和鍵變量的foreach“(implements) tor的系統(tǒng)預(yù)定義接口,那么在使foreachforeach32PHP目前(PHP5,PHP對(duì)類型約束支持的不是很好,只支持兩種類型約束:33 34C#PHP是在教新的版本(php5以后)中才開始使用!但是 3.2版本以后就使用了命名空間可以,放在不同 下即可 ,中functionA();classB;constC;functionA();classB;constC; functionA();functionA();classB;classB;constC;constnamespace空

溫馨提示

  • 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)論