php基礎(chǔ)語法之魔術(shù)方法_第1頁
php基礎(chǔ)語法之魔術(shù)方法_第2頁
php基礎(chǔ)語法之魔術(shù)方法_第3頁
php基礎(chǔ)語法之魔術(shù)方法_第4頁
php基礎(chǔ)語法之魔術(shù)方法_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

魔術(shù)方法,magicmethod在特定的情況下,會被自動調(diào)用的方法,通常負(fù)責(zé)完成某塊獨(dú)立的功能的方法稱之為魔術(shù)方法!特點(diǎn):1,需要用戶腳本定義,不定義不執(zhí)行!2,命名方式都是以__開頭!總結(jié):__construct__destruct__sleep__wakeup__set__get__isset__unset__clone__call__callStatic__autoload()//魔術(shù)函數(shù)__invoke()將一個對象,當(dāng)作函數(shù)調(diào)用時,會觸發(fā)該對象的__invoke()方法,由此方法,就可以調(diào)用,沒有該方法就不能調(diào)用!回想匿名函數(shù)$say中是啥?對象!語法是調(diào)用對象的語法?為什么,匿名函數(shù)對象(ClosureL類對象)可以,但是普通類對象不行?__invoke是php實(shí)現(xiàn)匿名函數(shù)不可或缺的部分!此時,也可以傳遞參數(shù),為對象傳遞參數(shù),就是為invoke魔術(shù)方法傳遞參數(shù)!__toString()轉(zhuǎn)換到字符串的意思!當(dāng)將對象當(dāng)作字符串使用時,會自動調(diào)用該對象的魔術(shù)方法!如果此時,存在toString魔術(shù)方法,即可以完成轉(zhuǎn)換。toString的返回值,就是轉(zhuǎn)換的結(jié)果,一般轉(zhuǎn)換對象的標(biāo)志性的屬性即可!靜態(tài)延遲綁定,static>=5.3問題:$this永遠(yuǎn)代表所在類的對象?不是self用于代表所在類么?是,永遠(yuǎn)代表所在類的對象!看邏輯:顯然,當(dāng)前的邏輯不是十分完善!此時,應(yīng)該是表示當(dāng)前類的關(guān)鍵字,最好應(yīng)該在調(diào)用時決定最好?。╯elf不能做到)此時,采用一個新的關(guān)鍵字,代表當(dāng)前類,與self不同,在于是運(yùn)行時調(diào)用時決定,而不是在類編譯時就確定好了的!關(guān)鍵字是:static??偨Y(jié):static關(guān)鍵字的功能:聲明靜態(tài)局部變量聲明靜態(tài)成員當(dāng)前類,運(yùn)行時的當(dāng)前類!類中,可以表示類的關(guān)鍵字:self,所在類static,調(diào)用類parent,父類參數(shù)類型約束約束函數(shù),或者方法類參數(shù)的類型,只能是某個類的對象!php是弱類型,變量可以存儲任意類型的數(shù)據(jù)!函數(shù),方法的參數(shù)也是可以接受任意類型!但是參數(shù),可以被規(guī)定為,某個類的固定對象!在參數(shù)前增加類名即可!注意,只支持類名!還支持?jǐn)?shù)組!對象的遍歷對象是一個集合數(shù)據(jù)類型!簡單的遍歷,foreachforeach,可以遍歷對象遍歷對象,是依次獲得對象擁有的屬性的信息!留意,訪問修飾可以影響!自定義遍歷,iterator,迭代器接口場景:在遍歷班級時,就相當(dāng)于,遍歷的班級的所有學(xué)生,而不不是遍歷班級的所有屬性!此時,需要使用接口編程實(shí)現(xiàn)。foreach時,php回去判斷當(dāng)前所遍歷的對象的類,是否類實(shí)現(xiàn)一個叫iterator(迭代器)接口!不是的話,就會依次得到對象每個屬性?。ê唵伪闅v)是的話,會在foreach執(zhí)行時,通過調(diào)用接口內(nèi)規(guī)定的各個方法來完成這個遍歷!兩個問題:foreach的流程:Iterator接口的內(nèi)容:預(yù)定義的!php定義好了的!顯然,php的foreach的五個重要的步驟,依賴于接口中定義的5個方法!編程實(shí)現(xiàn),是需要遍歷學(xué)生信息:類要實(shí)現(xiàn)Iterator接口2依次完善抽象方法常用的對象,類函數(shù)is_object();class_exists();interface_exists();get_class();get_parent_class();get_class_vars();得到類的變量(屬性)get_class_methods();得到類的方法get_declared_classes();得到所有已經(jīng)定義的類!可以見,有自定義類,和預(yù)定義類!stdClass,內(nèi)置的標(biāo)準(zhǔn)類!__PHP_Incomplete_ClassC魔術(shù)常量__CLASS__,當(dāng)前類名。注意:可以newself不可以new__CLASS__。__METHOD__,當(dāng)前方法名。區(qū)別__FUNCTION__。__FILE____DIR____LINE____FUNCTION__面向?qū)ο蟮奶卣鞣庋b,繼承多態(tài)快速排序分治。分而治之!核心思想:解決一個難度為N的問題,與解決2個難度為N/2相比!冒泡解決6個元素的問題?需要比較幾次?5,4,3,2,1=15冒泡3個元素的問題兩次?2,1=32,1=3思路:將整體的待排序序列,分割成兩個部分!分割的原則,跳出一個參考元,將比參考元大的,放一起,比參考元小的放在一起!假設(shè)第一個為參考元!接下,再對,分割的兩個子序列,再次分割!直到所有的分割的待排序序列內(nèi),元素?cái)?shù)量為一個或者0個!實(shí)現(xiàn)的時候,應(yīng)該注意:1,選擇參考元的問題。編程實(shí)現(xiàn):遞歸實(shí)現(xiàn)!遞歸點(diǎn):遞歸出口:待排序的序列元素

溫馨提示

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

評論

0/150

提交評論