版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
PHP面向對象編程1PHP是同時支持面向對象和面向過程的編程語言!傳統(tǒng)的面向過程的編程思想總結起來就八個字——自頂向下,逐步細化大家以來播客報名學習這件事情,可以分成哪些步驟insertinto登記表 等學生信息updateupdate學生表set班級第二步:學生繳費,update學生表Money減少,更改繳費字段狀態(tài)update機構表Money增加、提出提供繳獲得分配增加比如一個人的屬性有:身高、體重、三圍、、、學歷、 一個的屬性有:價格、品牌、操作系統(tǒng)、顏色、尺寸等屬性 、學歷、話、Money金額等功能(能做什么):屬性 、學歷、話、Money金額、工號等功能(能做什么):功能(能做什么):功能(能做什么):教師、 、能發(fā)工Money功能(能做什么):等學生教師班級所以,面向對象所以,面向對象 思想是123,從前期開發(fā)的角度來看面向對象比面向過程要更復雜但是從和擴展的角度來看,42對象,objectOOPPHP中,采用類(class)類其實就是得到對象的法而已!只不過大部分面向對象的語言都是通過來產(chǎn)生對象,phpPHP中,要想得到對象,必須先有所以,OOP中的對象也都應該有一個類!寫代碼,會教書;另一個對象(人類)可能叫,女,會演戲,會唱歌!class(((屬性(變量方法(函數(shù)類常量(常量12,需要對成員(屬性和方法)一下才可以使用private,定義方法的時候,可以省略控制修飾符,默認為publicvarnew來完成的!對象如何(操作)其中的成員呢?利用箭頭來! 無論在任何地方(包括類內(nèi)和類外)對象的成員,都應該先找到該對象才行3$this$this4OOP5new一個對initnew在實例化一個對象的時候,PHP系統(tǒng)會自動的調(diào)用一個名字叫作construct()的方法,我們init改名為construct注意:PHP早期的版本中,構造方法有一個比較老的語法,就是使用于類名同名方法作當兩個構造方法同時存在的時候,真正起作用的是construct方法!6是在一個對象“”的時候由系統(tǒng)自動調(diào)用的!析構方法的名字叫destruct()1應該是在對象銷毀之前調(diào)用的,也就是在對象即將還未的時候調(diào)用!因為析構方法中的$this還可以使用!2,對象有幾種情況unset改變對象變量的值的時候,該對象也會有一個常見的刪除一個對象的方法:$對象變量123PHP7也就是對象間的賦值或!__cloneStudent類中的一個實例呢?instanceof運算符來進行判斷!instanceof8MySQLDBMySQLDB類,該類可以當成一個工具類13MySQLDB是該類的名字,class(定義相關的類,類就是實體(對象)實例化出相關的對象(實體對象成員的符:-三,方法中的$this是一個偽對象,代表當前對象(誰調(diào)用這個方法誰就是當前對象類和對象的形式:屬性由對象來管理,方法由類來管理OOP完成報名過程新對象進行初始化操作,construct()構方法釋放該對象所占用的額源對象的值傳遞和傳遞效果是完全一樣clone八,MySQLDB第9 所以,我們應該由類來或操作靜態(tài)成員,因為所有的對象都屬于某個類!static既然靜態(tài)屬性由類來進行管理,所以也應該由類來進行,語法形式為:self如果是在某一個類的內(nèi)部,靜態(tài)成員的時候,可以使用關鍵字self來代替當前的類名self10也是所有的對象所共享的方法也是由類來進行管理也是在的時候增加static關鍵字TestTest因為靜態(tài)方法和非靜態(tài)方法在內(nèi)存的機制其實是一樣的也就導致了二者之間其實并有太大的本質上的區(qū)別?。o論采用什么方式調(diào)用靜態(tài)方法,都不可以使用$this關鍵字!因為$this本身就體現(xiàn)了各個對象“獨自占用”方法的含義!也就是說,如果想使用$this關鍵字,只能用非靜態(tài)方法!那就是類調(diào)用靜態(tài)方法,由對象調(diào)用非靜態(tài)方法!切記11const來定義!const=值5它們在內(nèi)存中的機制如下1212PHP在執(zhí)行的時候,如果發(fā)現(xiàn)需要一個類(只要是和這個類相關的任何的操作個名字叫作autoload($class_name)函數(shù),調(diào)用的時候,會給該函數(shù)傳遞一個參數(shù),該參數(shù)一般的,系統(tǒng)默認的自動加載函數(shù)就是autoload(),但是隨著項目規(guī)模的擴大,有可能出f11,一定要發(fā)生在需要某個類之前2,可以多個自動加載函數(shù),在載入成功之前,會依次的按 f1f2f3f3f2,f2依然沒有f1,最后才找到:3autoload函數(shù)就失效了!如果想繼續(xù)生效,需要重新!現(xiàn)在,我們需要將上面的autoload方法成自動加載方法此時,該靜態(tài)方法的參數(shù)形式為:此外,靜態(tài)方法的時候,還有一個更加簡單的語法形式,參數(shù)可以直接寫為13序列化主要解決數(shù)據(jù)的持久化的問題對象也是一種數(shù)據(jù)類型,既然是數(shù)據(jù),就也存在被持久化的問題當PHP運行結束之后,所有的資源都會,其中自然包括內(nèi)存中的數(shù)據(jù),如果想實現(xiàn)數(shù)據(jù)的持久化,就應該在運行結束之前進行持久化!,的自動轉換,也就是說,只要當初保存的數(shù)據(jù)不是字符串類型的時候都有可能出現(xiàn)問,為什么反序列化之后類名變成 在對象的中引入相關的類文件就行了link屬性(原始保存的是數(shù)據(jù)庫的連接資源) MySQLDB.class.php: 14 黃種OOP代碼中,也一樣要體現(xiàn)出類與類之間的共性與個性關系,我們就是通過ABAB類,同時OOP中的代碼重用的特性!此時,BookPhoneGoods類所定義的所有的成員信息!這里的成員信息就此時,上面的$b是不是Goods類實例化出來的對象呢?比如:BAAB類!擴展:(C++在在Book類中沒找到showName()再從BookBook15override此時通過子類實例化出來的對象相關成員的時候真正其作用的是子類中定義的成員showName方法還在不在?調(diào)用調(diào)用showName()Book就不會繼續(xù)往其父類查找了!父類名::2parentparentparentstaticselfstatic方法:類名::靜態(tài)方法名可以使用類來靜態(tài)方法和非靜態(tài)方法也可以使用對象來靜態(tài)方法和了二者之間的區(qū)別在語法上只有一個,那就是靜態(tài)方法中不能使用$this關鍵定義方式:const=值調(diào)用方式:類名::類的5個成員在內(nèi)存中的機制系統(tǒng)默認的自動加載函數(shù)第二步:將這個普通函數(shù)成類文件的自動加載函數(shù),使對象在序列化的時候應該指定需要被序列化的屬性,通過魔術方法sleepwakeup來實現(xiàn)的繼承的本質不是將父類的代碼到子類而是通過繼承鏈條找到相應的父類成員名::parent關鍵字來代替!第16講控制修飾所謂的控制修飾符,主要作用是控制類的成員(屬性和方法,不包括類常量,在哪些地方可以被,在哪些地方不可以被的一種機制!在在PHP中,一共有三 范圍的概念所以所以 控制修飾符也一共有三個public:公共的,當前類內(nèi),繼承鏈類內(nèi)和類外都可以被到思考:如何選擇控制修飾符1,當子類重寫父類成員的時候,子類的控制修飾符不能低于父類的控制修飾的訪父類 父類 子類:可以是public也可以是217MySQLDBMySQLDBMySQLDB18final產(chǎn)生了兩個產(chǎn)生了兩個 finalfinalfinal所以,final另外,finalfinal關鍵字!此時,該方法就是最終方法!第19 妖怪類:概念太模糊,也很抽象! 來一個類為抽象類,此時,該抽象類中應該具有抽象方法!多 1220interfacePHP中定義一個接口,其實就是一種純粹的規(guī)范或規(guī)定,規(guī)定該接口的下級類必須要實接口常量:抽象方法:必須為public(與抽象類不同,抽象類還可以為interface來定義的:I開頭!1,接口中的抽象方法不需要寫 他的普通成員,只能有抽象方法不能有普通方法,所以不會!2implements當一個類“實現(xiàn)”一個當一個類“實現(xiàn)”一個 ,也只有兩種選擇結構,但是接口中的抽象方法必須為public型!2PHP不支持多繼承,但是支持多實現(xiàn),也就是說,一個類可以同時“實現(xiàn)”多個接口!21overloadPHPPHP指的是對不可的成員的處理方式,稱之為成員的重載這里的不這里的不 有兩種情況12,該成員存在,但是受控制的限制(比如為private,類外就不可當然,以上只是系統(tǒng)默認的行為,php對不可的成員的時候,是可以采取相關的操22(上就是當一個不可的屬性的時候的一種處理機制PHP44當為不可的屬性賦值的時候當獲取不可的屬性的值的時候當刪除一個不可的屬性的時
當判斷一個不可的屬性是否存在的時
一旦加入set方法,當為一個不可的屬性賦值的時候,處理權就交給用戶自己了!一個是該不可的屬性的名字一個是為該不可的屬性賦的值122行代碼只是觸發(fā)了set222行代碼的賦值操作有沒有成功?沒有,因為set方法什么都沒做!一旦加入了get()方法,對不可的屬性賦值的時候,就會觸發(fā)該魔術方法的自動執(zhí)行,在實際的應用中,set和get往往是成對出現(xiàn)的,往往利用它們批量的對對象的私有屬性23(下一般來說,當刪除一個不可的私有屬性的時候,系統(tǒng)默認的行為是報錯但是一旦加入了unset方法,則當刪除一個不可的屬性的時候,會自動觸發(fā)該方法的該魔術方法同樣需要一個參數(shù),就是這個不可的屬性的名字當判斷一個不可的屬性是否存在的時候,會自動觸發(fā)該方法的執(zhí)行24處理不可的方法的一種機制當調(diào)用一個不可的非靜態(tài)方法(對象方法)的時候,會自動觸發(fā)該方法的執(zhí)行!方法名:string12當調(diào)用一個不可的靜態(tài)方法(類方法)的時候,會自動觸發(fā)該魔術方法的執(zhí)行!參數(shù)的形式和call是一樣的!f1:112233一、控制修飾符:就是控制類的成員在哪可以在哪不能的一種機protected:受保護的,當前類內(nèi)和繼承鏈類內(nèi)可以,類外不能當子類重寫父類成員的時候子類的控制權限不應該低于父類的控制權MySQLDB僅可能的將其成員三、final類和最終方法 五、interface需要使用關鍵字PHP不支持多繼承,但是支持多實現(xiàn),也就是一個類可以同時實現(xiàn)多個接口六、overload重載25autoload 回顧一回顧一 函數(shù)之所以函數(shù)的調(diào)用形式是將一個對象當成一個函數(shù)來調(diào)用那是因為閉包對象里面就 此時,可以定義toString魔術常量: 要注意其與self的區(qū)別self是指該類本(類是一種結構是有機的一個整體而CLASS 還有一個魔術常量:FUNCTION261,$this是不是代表當前代碼所在類直接實例化出來的對象不是,$this代表當前對象,而當前對象不一定是其代碼所在的類直接實例化出來的對象,所以,$this要根據(jù)執(zhí)行環(huán)境來決定,也是執(zhí)行上下文!2,self是不是代表其當前代碼所在的類的類名?showIDBook類來調(diào)用的,從業(yè)務邏輯上來說,代碼執(zhí)行的時候,selfBook類才對!所以,為了解決上面的問題,PHP又增加了一個可以代表“當前類”的一個關鍵字!1self2(綁定“當前類”的時機就不應該發(fā)生在代碼的預編譯階段,而應該發(fā)生在代碼staticstatic關鍵字的意義:123,代表“當前類,不過,綁定當前類的實際,推后期代碼執(zhí)行階段的時27我們無法用戶去new對象,只能讓用戶new對象的時候不生效!new所以,我們只需要構造方法即可1因為此時還不存在任何的對象,只能由類來這個方法2因為這個方法本來就是需要在類行調(diào)用以得到一個對象n次調(diào)用這個方法的時候,返回剛才第一次實例化出來的對象12因為目前還是只能由類來方法這個屬性(因為還沒有對象由于在克隆的時候需要觸發(fā)clone
__clone以上,就是實現(xiàn)單例模式的典型的方法,也叫作“三私一公28MySQLDBMySQLDB293031如果現(xiàn)在想遍歷的是$stupartner屬性(也是一個數(shù)組,應該怎么辦?foreach51reset23current4key,nextforeachforeach是為值變量$valuecurrent(數(shù)組名為鍵變量$keykey(數(shù)組名next(數(shù)組名foreach(就是對值變量和鍵變量的foreach“(implements) tor的系統(tǒng)預定義接口,那么在使foreachforeach32PHP目前(PHP5,PHP對類型約束支持的不是很好,只支持兩種類型約束:33 34C#PHP是在教新的版本(php5以后)中才開始使用!但是 3.2版本以后就使用了命名空間可以,放在不同 下即可 ,中functionA();classB;constC;functionA();classB;constC; functionA();functionA();classB;classB;constC;constnamespace空
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廢品購買合同范例
- 小紅書推廣合同范例
- 閑置房屋保潔合同范例
- 海外員工雇傭合同范例
- 安裝個人窗戶合同范例
- 職工浴室維修報告范文
- 2025年伊春貨運從業(yè)資格考試題目
- 2025年平?jīng)龅缆坟涍\從業(yè)資格證模擬考試官方題下載
- 上海戲劇學院《智能控制技術》2023-2024學年第一學期期末試卷
- 上海思博職業(yè)技術學院《自動駕駛概論》2023-2024學年第一學期期末試卷
- GB 5009.226-2016食品安全國家標準食品中過氧化氫殘留量的測定
- 反有組織犯罪法學習PPT
- 懸梁刺股-圖文
- 公司組織結構圖Word模板
- CYYF城鎮(zhèn)污水廠全過程除臭工藝課件
- 國際機場人體捐獻器官航空運輸管理規(guī)定
- 課件:第三章 社會工作項目的策劃(《社會工作項目策劃與評估》課程)
- 國產(chǎn)保健食品靈芝孢子粉膠囊工藝(GMP使用)
- 新歷史小說1課件
- 2023年大連國際機場股份有限公司招聘筆試題庫及答案解析
- 國內(nèi)外油氣管道技術現(xiàn)狀與發(fā)展趨勢課件
評論
0/150
提交評論