




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章PHP框架基礎(chǔ)(上)《PHP網(wǎng)站開(kāi)發(fā)實(shí)例教程(第3版)》學(xué)習(xí)目標(biāo)/Target
了解框架的概念,能夠說(shuō)出什么是框架。
熟悉常見(jiàn)的PHP框架,能夠列舉常見(jiàn)的PHP框架。
掌握MVC設(shè)計(jì)模式,能夠在自定義框架中實(shí)現(xiàn)MVC設(shè)計(jì)模式。學(xué)習(xí)目標(biāo)/Target
掌握框架單一入口和路由的實(shí)現(xiàn)方式,能夠在自定義框架中實(shí)現(xiàn)單一入口和路由。
掌握命名空間的使用方法,能夠定義、訪問(wèn)和導(dǎo)入命名空間。
掌握自動(dòng)加載的使用方法,能夠注冊(cè)自動(dòng)加載函數(shù)和自動(dòng)加載方法。章節(jié)概述/Summary在項(xiàng)目開(kāi)發(fā)中,為了提高開(kāi)發(fā)效率,節(jié)省編寫(xiě)底層代碼所花費(fèi)的時(shí)間,開(kāi)發(fā)者一般會(huì)使用框架開(kāi)發(fā)項(xiàng)目。要想深入學(xué)習(xí)框架,需要先掌握框架的基礎(chǔ)知識(shí)。本章將對(duì)PHP框架的基礎(chǔ)知識(shí)進(jìn)行講解。目錄/Contents7.17.27.3初識(shí)框架MVC設(shè)計(jì)模式框架的單一入口和路由7.4命名空間7.5自動(dòng)加載初識(shí)框架7.1
先定一個(gè)小目標(biāo)!了解框架的概念,能夠說(shuō)出什么是框架。7.1.1框架概述7.1.1框架概述為什么使用框架?由于每個(gè)人的編程習(xí)慣各有不同,當(dāng)一個(gè)項(xiàng)目需要多個(gè)人同時(shí)參與開(kāi)發(fā)和維護(hù)時(shí),就容易出現(xiàn)問(wèn)題。例如,開(kāi)發(fā)人員小明定義了一個(gè)$user變量,開(kāi)發(fā)人員小紅也定義了一個(gè)$user變量,當(dāng)合并代碼時(shí),兩個(gè)變量命名沖突,程序出錯(cuò)。雖然看似是很小的問(wèn)題,但是如果項(xiàng)目有成千上萬(wàn)行代碼,開(kāi)發(fā)人員就需要花費(fèi)大量的時(shí)間去排查問(wèn)題。7.1.1框架概述框架是一種遵循通用的代碼規(guī)范,采用特定設(shè)計(jì)模式編寫(xiě)的代碼文件集合,用于為項(xiàng)目開(kāi)發(fā)提供基礎(chǔ)支撐。使用框架的優(yōu)點(diǎn):在項(xiàng)目開(kāi)發(fā)初期方便開(kāi)發(fā)人員快速、高效地搭建系統(tǒng)。在項(xiàng)目開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)人員將注意力專注于業(yè)務(wù)實(shí)現(xiàn),無(wú)須過(guò)多考慮項(xiàng)目底層架構(gòu),節(jié)省時(shí)間。在項(xiàng)目維護(hù)升級(jí)時(shí),框架具有靈活性和可維護(hù)性,能夠根據(jù)需求調(diào)整,保證項(xiàng)目維護(hù)升級(jí)。使用框架的缺點(diǎn):會(huì)導(dǎo)致項(xiàng)目的復(fù)雜度增加、運(yùn)行效率降低等問(wèn)題。7.1.1框架概述在開(kāi)發(fā)時(shí),不可一味地生搬硬套,要根據(jù)具體情況決定是否使用框架以及使用什么框架。
先定一個(gè)小目標(biāo)!熟悉常見(jiàn)的PHP框架,能夠列舉常見(jiàn)的PHP框架。7.1.2常見(jiàn)的PHP框架7.1.2常見(jiàn)的PHP框架2.Yii一款快速、高效、基于組件的PHP框架,實(shí)現(xiàn)了MVC設(shè)計(jì)模式,并基于該模式組織代碼。1.Laravel采用MVC設(shè)計(jì)模式,具備敏捷開(kāi)發(fā)特質(zhì),支持Composer,提倡代碼重用,保證代碼簡(jiǎn)潔性與優(yōu)雅性。3.Symfony具有穩(wěn)定性、長(zhǎng)久性、靈活性、組件可復(fù)用、速度快、性能高等特性而備受關(guān)注。4.ThinkPHP在國(guó)內(nèi)使用較多的開(kāi)源PHP框架。靈活、高效、擁有完善的技術(shù)文檔,成為國(guó)內(nèi)非常受歡迎的PHP框架之一。MVC設(shè)計(jì)模式7.2
先定一個(gè)小目標(biāo)!了解MVC設(shè)計(jì)模式,能夠說(shuō)出MVC設(shè)計(jì)模式的工作流程。7.2.1MVC概述MVC是一種軟件設(shè)計(jì)模式,到目前為止,MVC已經(jīng)成為一種廣泛流行的軟件設(shè)計(jì)模式。MVC采用了人類分工協(xié)作的思維方法,將程序中的功能實(shí)現(xiàn)、數(shù)據(jù)處理和界面顯示分離,從而在開(kāi)發(fā)復(fù)雜的應(yīng)用程序時(shí),開(kāi)發(fā)者可以專注于其中的某個(gè)方面,進(jìn)而提高開(kāi)發(fā)效率和項(xiàng)目質(zhì)量。MVC設(shè)計(jì)模式將軟件系統(tǒng)分成了3個(gè)核心部件:模型、視圖和控制器,不同的部件用于處理不同的任務(wù):模型是指處理數(shù)據(jù)的部分。視圖是指顯示在瀏覽器中的網(wǎng)頁(yè)。控制器是MVC中的“指揮官”,負(fù)責(zé)處理請(qǐng)求,調(diào)用模型完成數(shù)據(jù)庫(kù)操作,調(diào)用視圖完成數(shù)據(jù)的展示。7.2.1MVC概述MVC的工作流程:7.2.1MVC概述
先定一個(gè)小目標(biāo)!掌握MVC的實(shí)現(xiàn)方式,能夠在自定義框架中實(shí)現(xiàn)MVC。7.2.2【案例】實(shí)現(xiàn)MVC設(shè)計(jì)模式在前面的章節(jié)中,編寫(xiě)代碼時(shí)通常都是將所有代碼寫(xiě)在一個(gè)文件中,如果文件中的代碼量非常大,會(huì)增加維護(hù)代碼的難度。使用MVC設(shè)計(jì)模式可以解決這個(gè)問(wèn)題。本案例使用MVC設(shè)計(jì)模式實(shí)現(xiàn)讀取數(shù)據(jù)和展示數(shù)據(jù)。
案例需求7.2.2【案例】實(shí)現(xiàn)MVC設(shè)計(jì)模式①創(chuàng)建C:\web\www\myframe目錄并使用VSCode編輯器打開(kāi)該目錄。②為C:\web\www\myframe目錄配置域名為www.myframe.test的虛擬主機(jī)。③創(chuàng)建myframe數(shù)據(jù)庫(kù)和student數(shù)據(jù)表,在student數(shù)據(jù)表中插入4條測(cè)試數(shù)據(jù)。④在項(xiàng)目目錄中創(chuàng)建子目錄app、views、public和入口文件public\index.php。創(chuàng)建后,通過(guò)瀏覽器訪問(wèn)虛擬主機(jī),測(cè)試項(xiàng)目是否可以訪問(wèn)。
實(shí)現(xiàn)思路7.2.2【案例】實(shí)現(xiàn)MVC設(shè)計(jì)模式⑤創(chuàng)建控制器app\StudentController.php,在控制器中定義index()方法,在public\index.php中實(shí)例化控制器,通過(guò)瀏覽器查看運(yùn)行結(jié)果。⑥創(chuàng)建模型app\StudentModel.php,在控制器中調(diào)用模型查詢student表中的數(shù)據(jù),通過(guò)瀏覽器查看運(yùn)行結(jié)果。⑦創(chuàng)建視圖views\student.php,在控制器中引入視圖,通過(guò)瀏覽器查看運(yùn)行結(jié)果。
實(shí)現(xiàn)思路7.2.2【案例】實(shí)現(xiàn)MVC設(shè)計(jì)模式框架的單一入口和路由7.3
先定一個(gè)小目標(biāo)!了解單一入口的概念,能夠說(shuō)出單一入口的優(yōu)點(diǎn)。7.3.1單一入口概述單一入口是指一個(gè)項(xiàng)目或者應(yīng)用使用統(tǒng)一的入口文件,這個(gè)入口文件是第一步被執(zhí)行的,項(xiàng)目的所有功能和操作都需要經(jīng)過(guò)這個(gè)入口文件完成初始化。當(dāng)項(xiàng)目中有多個(gè)控制器或需要執(zhí)行控制器的不同方法時(shí),可以給入口文件傳遞用戶請(qǐng)求的參數(shù),告知入口文件當(dāng)前用戶請(qǐng)求的是哪個(gè)控制器中的哪個(gè)方法。7.3.1單一入口概述單一入口的優(yōu)點(diǎn):項(xiàng)目整體比較規(guī)范,應(yīng)用程序的所有HTTP請(qǐng)求都通過(guò)入口文件接收,并轉(zhuǎn)發(fā)到具體控制器的方法中。通過(guò)入口文件完成統(tǒng)一的操作(如權(quán)限控制、用戶登錄驗(yàn)證等),讓每個(gè)HTTP請(qǐng)求都具有相同的規(guī)則。7.3.1單一入口概述
先定一個(gè)小目標(biāo)!掌握單一入口的實(shí)現(xiàn)方式,能夠在自定義框架中實(shí)現(xiàn)單一入口。7.3.2【案例】實(shí)現(xiàn)單一入口實(shí)現(xiàn)單一入口時(shí),需要根據(jù)用戶的請(qǐng)求參數(shù)來(lái)訪問(wèn)指定的控制器和方法。本案例要求利用Apache的PATH_INFO功能,在index.php中實(shí)現(xiàn)單一入口功能。
案例需求7.3.2【案例】實(shí)現(xiàn)單一入口①在index.php中通過(guò)$_SERVER['PATH_INFO']接收參數(shù),根據(jù)參數(shù)實(shí)例化對(duì)應(yīng)的控制器并調(diào)用對(duì)應(yīng)的方法。②通過(guò)瀏覽器訪問(wèn)http://www.myframe.test/index.php/student/index如果看到學(xué)生信息的輸出結(jié)果,說(shuō)明實(shí)現(xiàn)了單一入口。
實(shí)現(xiàn)思路7.3.2【案例】實(shí)現(xiàn)單一入口
先定一個(gè)小目標(biāo)!掌握隱藏入口文件的實(shí)現(xiàn)方式,能夠在自定義框架中隱藏入口文件。7.3.3【案例】隱藏入口文件由于一些URL看起來(lái)冗長(zhǎng),不便于用戶記憶,通常會(huì)利用Apache的URL重寫(xiě)功能,將URL中的入口文件隱藏,使項(xiàng)目的URL變得簡(jiǎn)潔、美觀。本案例要求實(shí)現(xiàn)隱藏入口文件的功能。
案例需求7.3.3【案例】隱藏入口文件http://www.myframe.test/index.php/student/indexhttp://www.myframe.test/student/index①在Apache的配置文件httpd.conf中開(kāi)啟rewrite模塊。②創(chuàng)建分布式配置文件,添加重寫(xiě)規(guī)則。③通過(guò)瀏覽器訪問(wèn)http://www.myframe.test/student/index,如果能正常訪問(wèn),說(shuō)明隱藏了入口文件。
實(shí)現(xiàn)思路7.3.3【案例】隱藏入口文件
先定一個(gè)小目標(biāo)!了解框架中的路由,能夠說(shuō)出路由的工作流程。7.3.4框架中的路由在網(wǎng)絡(luò)通信中,“路由”是一個(gè)網(wǎng)絡(luò)層面的術(shù)語(yǔ),它是指從某一網(wǎng)絡(luò)設(shè)備出發(fā)去往某個(gè)目的地的路徑。在網(wǎng)站開(kāi)發(fā)中,路由的本質(zhì)是一種對(duì)應(yīng)關(guān)系。比如,在瀏覽器地址欄中輸入要訪問(wèn)的URL地址,瀏覽器去請(qǐng)求這個(gè)URL地址對(duì)應(yīng)的資源,那么URL地址和真實(shí)的資源之間就有一種對(duì)應(yīng)的關(guān)系——路由。7.3.4框架中的路由路由的工作流程:7.3.4框架中的路由
先定一個(gè)小目標(biāo)!掌握路由的實(shí)現(xiàn)方式,能夠在自定義框架中實(shí)現(xiàn)路由。7.3.5【案例】路由的代碼實(shí)現(xiàn)在7.3.2小節(jié)的案例中實(shí)現(xiàn)了單一入口,通過(guò)瀏覽器訪問(wèn)http://www.myframe.test/student/index時(shí),會(huì)調(diào)用Student控制器下的index()方法。這種訪問(wèn)方式雖然簡(jiǎn)單、方便,但限制了URL的格式。本案例要求在框架中實(shí)現(xiàn)路由,實(shí)現(xiàn)根據(jù)用戶請(qǐng)求的URL映射到指定的路由。
案例需求7.3.5【案例】路由的代碼實(shí)現(xiàn)①在index.php中定義數(shù)組,數(shù)組中保存路由規(guī)則,數(shù)組的鍵表示路由地址,數(shù)組的值表示路由地址對(duì)應(yīng)的控制器和方法。②通過(guò)瀏覽器訪問(wèn)配置的路由,查看是否能匹配定義的路由。
實(shí)現(xiàn)思路7.3.5【案例】路由的代碼實(shí)現(xiàn)命名空間7.4
先定一個(gè)小目標(biāo)!掌握命名空間的定義方法,能夠在PHP腳本中正確定義命名空間。7.4.1命名空間的定義命名空間可以解決不同類庫(kù)之間的命名沖突問(wèn)題。定義命名空間使用namespace關(guān)鍵字。7.4.1命名空間的定義語(yǔ)法格式namespace空間名稱;空間名稱遵循標(biāo)識(shí)符命名規(guī)則,由數(shù)字、字母和下畫(huà)線組成,且不能以數(shù)字開(kāi)頭declare關(guān)鍵字用于設(shè)置或修改指定代碼塊的運(yùn)行時(shí)配置選項(xiàng)。定義命名空間時(shí),只有declare關(guān)鍵字可以出現(xiàn)在第一個(gè)定義命名空間的語(yǔ)句之前。如果第一個(gè)定義命名空間的語(yǔ)句之前有其他PHP代碼,會(huì)出現(xiàn)Fatalerror錯(cuò)誤信息。7.4.1命名空間的定義演示命名空間的定義:7.4.1命名空間的定義示例代碼<?phpnamespaceApp;/*此處編寫(xiě)PHP代碼*/示例代碼<?phpdeclare(ticks=1);namespaceApp;/*此處編寫(xiě)PHP代碼*/演示在定義命名空間前使用declare語(yǔ)句:一個(gè)目錄下可以創(chuàng)建多個(gè)目錄和文件,同樣,命名空間也可以指定多個(gè)層次。非頂層的命名空間被稱為子命名空間。定義子命名空間的示例代碼:7.4.1命名空間的定義示例代碼<?phpnamespaceApp\Http\Controllers;/*此處編寫(xiě)PHP代碼*/多學(xué)一招:在同一個(gè)PHP腳本中定義多個(gè)命名空間在同一個(gè)PHP腳本中定義多個(gè)命名空間在同一個(gè)PHP腳本中可以定義多個(gè)命名空間,通過(guò)簡(jiǎn)單組合和大括號(hào)“{}”定義多個(gè)命名空間。使用簡(jiǎn)單組合方式定義多個(gè)命名空間的示例代碼:<?phpnamespaceMyNamespace;/*此處編寫(xiě)PHP代碼*/namespaceAnotherNamespace;/*此處編寫(xiě)PHP代碼*/多學(xué)一招:在同一個(gè)PHP腳本中定義多個(gè)命名空間在同一個(gè)PHP腳本中定義多個(gè)命名空間使用大括號(hào)“{}”方式定義多個(gè)命名空間的示例代碼:<?phpnamespaceMyNamesapce{/*此處編寫(xiě)PHP代碼*/}namespaceAnotherNamespace{/*此處編寫(xiě)PHP代碼*/}
先定一個(gè)小目標(biāo)!掌握命名空間的訪問(wèn),能夠使用不同的方式訪問(wèn)命名空間。7.4.2命名空間的訪問(wèn)雖然任意合法的PHP代碼都可以包含在命名空間中,但只有類、接口、函數(shù)和常量受命名空間的影響,這些受命名空間影響的內(nèi)容也被稱為空間成員。PHP提供了3種訪問(wèn)命名空間的方式:非限定名稱訪問(wèn)限定名稱訪問(wèn)完全限定名稱訪問(wèn)7.4.2命名空間的訪問(wèn)1.非限定名稱訪問(wèn)非限定名稱訪問(wèn)是指直接訪問(wèn)空間成員,不指定空間名稱。這種方式只能訪問(wèn)當(dāng)前代碼向上尋找到的第1個(gè)命名空間內(nèi)的成員,當(dāng)找到的命名空間中不存在指定的空間成員時(shí),PHP會(huì)報(bào)錯(cuò)。2.限定名稱訪問(wèn)限定名稱訪問(wèn)是指從當(dāng)前命名空間開(kāi)始,訪問(wèn)子命名空間的成員。限定名稱訪問(wèn)的語(yǔ)法格式:語(yǔ)法格式空間名稱\空間成員名稱;7.4.2命名空間的訪問(wèn)3.完全限定名稱訪問(wèn)完全限定名稱訪問(wèn)是指在任意的命名空間中訪問(wèn)從根命名空間開(kāi)始的任意空間內(nèi)的成員。完全限定名稱訪問(wèn)的語(yǔ)法格式:語(yǔ)法格式\空間名稱\空間成員名稱;7.4.2命名空間的訪問(wèn)演示3種命名空間的訪問(wèn)方式:namespace01.php<?phpnamespacetwo\one;constPI=3.14;echoPI;//非限定名稱訪問(wèn)7.4.2命名空間的訪問(wèn)namespace02.php<?phpnamespacetwo;require'./namespace01.php';echoone\PI;//限定名稱訪問(wèn)echo\two\one\PI;//完全限定名稱訪問(wèn)多學(xué)一招:全局空間全局空間當(dāng)PHP腳本中沒(méi)有定義命名空間時(shí),其中的所有代碼都屬于全局空間。全局空間中的類、接口、函數(shù)和常量皆為全局空間成員。全局空間成員包括PHP內(nèi)置的成員,也包括用戶自定義的成員。在含有命名空間的PHP腳本中引入全局空間腳本后,全局空間成員的訪問(wèn)方式為“\全局空間成員”。多學(xué)一招:全局空間全局空間在命名空間中訪問(wèn)全局空間成員:<?phpnamespacecommon;constPHP_VERSION='8.2';echoPHP_VERSION;
//訪問(wèn)空間成員:8.2echo\PHP_VERSION;
//訪問(wèn)全局成員:8.2.3
先定一個(gè)小目標(biāo)!掌握導(dǎo)入命名空間的方法,能夠?qū)朊臻g和導(dǎo)入空間成員。7.4.3導(dǎo)入命名空間當(dāng)在一個(gè)命名空間中使用其他命名空間的空間成員時(shí),每次都在空間成員前面加上路徑會(huì)比較煩瑣,使用use關(guān)鍵字導(dǎo)入指定命名空間或空間成員。語(yǔ)法格式use命名空間或空間成員;7.4.3導(dǎo)入命名空間當(dāng)導(dǎo)入的空間成員為函數(shù)時(shí),需要在use后面添加function關(guān)鍵字。當(dāng)導(dǎo)入的空間成員為常量時(shí),需要在use后面添加const關(guān)鍵字。語(yǔ)法格式usefunction函數(shù)的命名空間;useconst常量的命名空間;7.4.3導(dǎo)入命名空間為了避免導(dǎo)入的內(nèi)容和已有內(nèi)容重名,可以使用as關(guān)鍵字為導(dǎo)入的內(nèi)容設(shè)置別名。語(yǔ)法格式use空間成員as別名;1.導(dǎo)入命名空間導(dǎo)入命名空間通常指在類中導(dǎo)入其他類的命名空間,示例代碼如下。7.4.3導(dǎo)入命名空間<?phpnamespacemyframe;useApp\Http\Controllers;classContainer{publicstaticfunctionstudent(){returnControllers\StudentController::introduce();
}}2.導(dǎo)入空間成員演示導(dǎo)入空間成員,即其他命名空間下的函數(shù)和常量的命名空間:7.4.3導(dǎo)入命名空間<?phpuseconstmyframe\PREFIX;usefunctionmyframe\getFullName;require'function.php';echoPREFIX,getFullName('test'); //輸出結(jié)果:pre_pre_test多學(xué)一招:使用use語(yǔ)句導(dǎo)入多個(gè)內(nèi)容使用use語(yǔ)句導(dǎo)入多個(gè)空間成員PHP允許一條use語(yǔ)句導(dǎo)入多個(gè)空間成員,同時(shí)也可以為導(dǎo)入的空間成員設(shè)置別名。use空間成員1,空間成員2as別名2;一條use語(yǔ)句還可以將同一個(gè)命名空間下的多個(gè)空間成員批量導(dǎo)入并分別設(shè)置別名。//類use命名空間\{類名1as別名,類名2as別名,類名3as別名,…}; //函數(shù)usefunction命名空間\{函數(shù)名1as別名,函數(shù)名2as別名,函數(shù)名3as別名,…};//常量useconst命名空間\{常量名1as別名,常量名2as別名,常量名3as別名,…};自動(dòng)加載7.5
先定一個(gè)小目標(biāo)!掌握注冊(cè)自動(dòng)加載函數(shù)的語(yǔ)法,能夠使用spl_autoload_register()函數(shù)注冊(cè)自動(dòng)加載函數(shù)。7.5.1注冊(cè)自動(dòng)加載函數(shù)PHP提供的spl_autoload_register()函數(shù)用于完成注冊(cè)自動(dòng)加載函數(shù)的功能。用戶可以將自定義的函數(shù)注冊(cè)為自動(dòng)加載函數(shù),當(dāng)PHP腳本試圖使用尚未被定義的函數(shù)時(shí),會(huì)執(zhí)行自動(dòng)加載函數(shù),在這個(gè)函數(shù)中完成加載操作。7.5.1注冊(cè)自動(dòng)加載函數(shù)spl_autoload_register()函數(shù)的語(yǔ)法格式:語(yǔ)法格式boolspl_autoload_register([callable$autoload_function[,bool$throw=true
[,bool$prepend=false]]])7.5.1注冊(cè)自動(dòng)加載函數(shù)第1個(gè)參數(shù)表示待注冊(cè)的自動(dòng)加載函數(shù)第2個(gè)參數(shù)設(shè)置自動(dòng)加載函數(shù)注冊(cè)失敗時(shí)是否拋出異常,默認(rèn)為true表示拋出異常第3個(gè)參數(shù)設(shè)置注冊(cè)的自動(dòng)加載函數(shù)添加到隊(duì)列的開(kāi)頭還是結(jié)尾,默認(rèn)為false添加到隊(duì)尾將匿名函數(shù)注冊(cè)為自動(dòng)加載函數(shù):語(yǔ)法格式spl_autoload_register(function($classname){//在此處編寫(xiě)自動(dòng)加載處理代碼});7.5.1注冊(cè)自動(dòng)加載函數(shù)將想要注冊(cè)的函數(shù)體直接寫(xiě)在注釋位置,也可以實(shí)現(xiàn)注冊(cè)自動(dòng)加載函數(shù)。演示使用spl_autoload_register()函數(shù)注冊(cè)自動(dòng)加載函數(shù):<?phpusemyframe\Container;functionloader($classname){$filename=substr($classname,strrpos($classname,'\\')+1);$filename=$filename.'.php';if(is_file($filename)){require$filename;}}spl_autoload_register('loader');echoContainer::student();//自動(dòng)加載Container類,調(diào)用student()靜態(tài)方法7.5.1注冊(cè)自動(dòng)加載函數(shù)多學(xué)一招:注冊(cè)多個(gè)自動(dòng)加載函數(shù)注冊(cè)多個(gè)自動(dòng)加載函數(shù)使用spl_autoload_register()函數(shù)可以注冊(cè)多個(gè)自動(dòng)加載函數(shù),這些自動(dòng)加載函數(shù)會(huì)按照注冊(cè)順序依次執(zhí)行,直到注冊(cè)完成為止。需要注意的是,如果第1個(gè)自動(dòng)加載函數(shù)加載后,類可以使用,則第2個(gè)自動(dòng)加載函數(shù)將不會(huì)執(zhí)行。<?phpspl_
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)機(jī)器人技術(shù)與應(yīng)用試題庫(kù)含參考答案
- 2025年廣東中考一輪復(fù)習(xí)測(cè)試-第四單元 生物圈中的人 第六、七章 人體生命活動(dòng)的調(diào)節(jié)人類活動(dòng)對(duì)生物圈的影響
- 種菜人員勞務(wù)合同范本
- 水果采購(gòu)合同范本
- 肱骨上端骨折護(hù)理
- 施工合同范本類型
- 上海代購(gòu)車合同范本
- 錫膏銷售合同范本
- 腸梗阻中醫(yī)個(gè)案護(hù)理
- 二零二五年度智慧城市建設(shè)年擔(dān)保公司借款合同
- 教科版-六年級(jí)科學(xué)下冊(cè)制作校園生物分布圖課件
- 2024年蘇州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 農(nóng)林行業(yè)就業(yè)現(xiàn)狀分析
- 2024版全文:中國(guó)二型糖尿病防治全指南
- 玄武巖纖維簡(jiǎn)介演示
- 決策氣象服務(wù)流程
- 無(wú)人機(jī)法律法規(guī)與安全飛行 第2版 課件 第4章 無(wú)人機(jī)法規(guī)與安全
- 施工會(huì)議紀(jì)要15篇
- 電力變壓器安裝技術(shù)規(guī)范
- 《生理學(xué)》課程標(biāo)準(zhǔn)
- GB/T 24478-2023電梯曳引機(jī)
評(píng)論
0/150
提交評(píng)論