本發(fā)明涉及PHP(Hypertext Preprocessor,超文本預(yù)處理器)框架下的視圖功能開發(fā)技術(shù)領(lǐng)域,具體來講是一種PHP框架下基于分組目錄和單一入口的視圖呈現(xiàn)方法及系統(tǒng)。
背景技術(shù):
在互聯(lián)網(wǎng)應(yīng)用中,大部分應(yīng)用程序都需要進行視圖頁面的呈現(xiàn)。通常情況下,視圖頁面的呈現(xiàn)需要利用到視圖文件和視圖數(shù)據(jù)(視圖中所需呈現(xiàn)的數(shù)據(jù)),視圖文件是呈現(xiàn)用戶界面的文件,存儲在視圖文件目錄(所有視圖文件所在的目錄)下;視圖數(shù)據(jù)則通過執(zhí)行控制器文件而獲取得來,該控制器文件是實現(xiàn)各項功能的業(yè)務(wù)邏輯代碼文件,存儲在控制器目錄下。
PHP語言作為網(wǎng)絡(luò)開發(fā)的強大語言之一,具有開放源代碼,跨平臺性強,開發(fā)快捷,效率高等優(yōu)點,得到了廣泛推廣和應(yīng)用。目前,在實現(xiàn)視圖頁面的呈現(xiàn)功能的開發(fā)中,也多數(shù)運用的是php框架下的代碼開發(fā)。
但是,現(xiàn)有的互聯(lián)網(wǎng)后臺PHP框架普遍采用是單控制器目錄以及控制器多入口的實現(xiàn)方式組織代碼,也就是說系統(tǒng)的控制器目錄僅有一個且控制器目錄下的每個控制器文件均具有多個入口(一個入口代表著這個控制器文件相應(yīng)能實現(xiàn)的一個功能,多個入口則表示該控制器文件中包含有實現(xiàn)多個功能的多種代碼)。隨著代碼工程量的不斷增大,單控制器目錄的實現(xiàn)方式使得后端控制器文件都集聚在一個目錄下,導(dǎo)致控制器文件查找困難且維護困難;除此之外,多入口的控制器文件也使得一個控制器文件中由于匯集了多種功能代碼,而使得文件內(nèi)容會隨著業(yè)務(wù)的復(fù)雜度增大而大大增多,最終導(dǎo)致控制器文件變的龐大,而難以維護。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是為了克服上述背景技術(shù)的不足,提供一種PHP框架下基于分組目錄和單一入口的視圖呈現(xiàn)方法及系統(tǒng),能在實現(xiàn)視圖呈現(xiàn)功能的同時,使得控制器文件查找便捷、易于維護,且不會出現(xiàn)控制器文件過于龐大的問題。
為達到以上目的,本發(fā)明提供一種PHP框架下基于分組目錄和單一入口的視圖呈現(xiàn)方法,包括以下步驟:
A、創(chuàng)建系統(tǒng)目錄架構(gòu),該系統(tǒng)目錄架構(gòu)包括系統(tǒng)控制器總目錄和系統(tǒng)視圖總目錄,系統(tǒng)控制器總目錄下設(shè)有至少一個控制器目錄,每個控制器目錄下設(shè)有至少一個控制器文件,每個控制器文件具有單一入口且與一個控制器ID相匹配;系統(tǒng)視圖總目錄下設(shè)有至少一個視圖文件目錄,每個視圖文件目錄下設(shè)有至少一個視圖文件,每個視圖文件的視圖文件名與控制器ID一致,轉(zhuǎn)入步驟B;
B、發(fā)起視圖請求,視圖請求中包括用戶請求的控制器目錄和用戶請求的控制器ID,轉(zhuǎn)入步驟C;
C、收到視圖請求后,對視圖請求進行解析,得到用戶請求的控制器目錄和用戶請求的控制器ID,轉(zhuǎn)入步驟D;
D、根據(jù)用戶請求的控制器目錄,在所述系統(tǒng)控制器總目錄下查找到對應(yīng)的控制器目錄;在查找到的控制器目錄下根據(jù)用戶請求的控制器ID查找到與該控制器ID相匹配的控制器文件;判定查找到的控制器文件所具有的單一入口為實現(xiàn)視圖功能的入口后,通過所述單一入口執(zhí)行控制器文件中的功能代碼,獲取到呈現(xiàn)視圖頁面所需的視圖數(shù)據(jù),轉(zhuǎn)入步驟E;
E、根據(jù)用戶請求的控制器ID,在所述系統(tǒng)視圖總目錄下查找到對應(yīng)的視圖文件,轉(zhuǎn)入步驟F;
F、利用查找到的視圖文件和獲取到的視圖數(shù)據(jù),進行視圖頁面的呈現(xiàn),結(jié)束。
在上述技術(shù)方案的基礎(chǔ)上,步驟B中,發(fā)起視圖請求時是按照規(guī)定的請求格式進行發(fā)送的,規(guī)定的請求格式為:http://xxx.com/控制器目錄/控制器ID;步驟C中所述對視圖請求進行解析,得到用戶請求的控制器目錄和用戶請求的控制器ID,具體包括以下操作:通過截取視圖請求的字符串,得到控制器目錄與控制器ID整合在一起的內(nèi)容;再根據(jù)控制器目錄與控制器ID之間的斜線分割符“/”,分別得到用戶請求的控制器目錄部分和用戶請求的控制器ID部分。
在上述技術(shù)方案的基礎(chǔ)上,步驟D中,若未查找到對應(yīng)的控制器目錄,或者未查找到與該控制器ID相匹配的控制器文件,或者判定查找到的控制器文件所具有的單一入口不是實現(xiàn)視圖功能的入口,則直接拋出錯誤提示后,結(jié)束;步驟E中,若未查找到對應(yīng)的視圖文件,也直接拋出錯誤提示后,結(jié)束。
在上述技術(shù)方案的基礎(chǔ)上,所述系統(tǒng)控制器總目錄下的控制器目錄與所述系統(tǒng)視圖總目錄下的視圖文件目錄一一對應(yīng);步驟E中所述根據(jù)用戶請求的控制器ID,在所述系統(tǒng)視圖總目錄下查找到對應(yīng)的視圖文件,具體包括以下操作:在系統(tǒng)目錄架構(gòu)中的系統(tǒng)視圖總目錄下,找到與步驟D查找到的控制器目錄相對應(yīng)的一個視圖文件目錄;根據(jù)用戶請求的控制器ID,在找到的視圖文件目錄下找到視圖文件名與控制器ID一致的視圖文件。
在上述技術(shù)方案的基礎(chǔ)上,步驟A中,創(chuàng)建系統(tǒng)目錄架構(gòu)時,對實現(xiàn)視圖功能的控制器文件單一入口的名稱做了統(tǒng)一定義;步驟D中,判定查找到的控制器文件所具有的單一入口為實現(xiàn)視圖功能的入口的具體過程為:判斷查找到的控制器文件的單一入口名是否為定義的實現(xiàn)視圖功能的單一入口的名稱,若是,則判定查找到的控制器文件所具有的單一入口為實現(xiàn)視圖功能的入口。
本發(fā)明同時還提供一種PHP框架下基于分組目錄和單一入口的視圖呈現(xiàn)系統(tǒng),包括系統(tǒng)目錄架構(gòu)創(chuàng)建單元、視圖請求發(fā)起單元、視圖請求解析單元、視圖數(shù)據(jù)獲取單元、視圖文件查找單元和視圖頁面呈現(xiàn)單元;
所述系統(tǒng)目錄架構(gòu)創(chuàng)建單元用于:創(chuàng)建系統(tǒng)目錄架構(gòu),該系統(tǒng)目錄架構(gòu)包括系統(tǒng)控制器總目錄和系統(tǒng)視圖總目錄,系統(tǒng)控制器總目錄下設(shè)有至少一個控制器目錄,每個控制器目錄下設(shè)有至少一個控制器文件,每個控制器文件具有單一入口且與一個控制器ID相匹配;系統(tǒng)視圖總目錄下設(shè)有至少一個視圖文件目錄,每個視圖文件目錄下設(shè)有至少一個視圖文件,每個視圖文件的視圖文件名與控制器ID一致;
所述視圖請求發(fā)起單元用于:向視圖請求解析單元發(fā)起視圖請求,所述視圖請求中包括用戶請求的控制器目錄和用戶請求的控制器ID;
所述視圖請求解析單元用于:收到視圖請求后,對視圖請求進行解析,得到用戶請求的控制器目錄和用戶請求的控制器ID;
所述視圖數(shù)據(jù)獲取單元用于:根據(jù)用戶請求的控制器目錄,在所述系統(tǒng)控制器總目錄下查找到對應(yīng)的控制器目錄;在查找到的控制器目錄下根據(jù)用戶請求的控制器ID查找到與該控制器ID相匹配的控制器文件;判定查找到的控制器文件所具有的單一入口為實現(xiàn)視圖功能的入口后,通過所述單一入口執(zhí)行控制器文件中的功能代碼,獲取到呈現(xiàn)視圖頁面所需的視圖數(shù)據(jù);
所述視圖文件查找單元用于:根據(jù)用戶請求的控制器ID,在所述系統(tǒng)視圖總目錄下查找到對應(yīng)的視圖文件;
所述視圖頁面呈現(xiàn)單元用于:利用查找到的視圖文件和獲取到的視圖數(shù)據(jù),進行視圖頁面的呈現(xiàn)。
在上述技術(shù)方案的基礎(chǔ)上,所述視圖請求發(fā)起單元向所述視圖請求解析單元發(fā)起視圖請求時是按照規(guī)定的請求格式進行發(fā)送的,規(guī)定的請求格式為:http://xxx.com/控制器目錄/控制器ID;所述視圖請求解析單元對視圖請求進行解析,得到用戶請求的控制器目錄和用戶請求的控制器ID的具體過程為:所述視圖請求解析單元通過截取視圖請求的字符串,得到控制器目錄與控制器ID整合在一起的內(nèi)容;再根據(jù)控制器目錄與控制器ID之間的斜線分割符“/”,分別得到用戶請求的控制器目錄部分和用戶請求的控制器ID部分。
在上述技術(shù)方案的基礎(chǔ)上,所述視圖數(shù)據(jù)獲取單元若未查找到對應(yīng)的控制器目錄,或者未查找到與該控制器ID相匹配的控制器文件,或者判定查找到的控制器文件所具有的單一入口不是實現(xiàn)視圖功能的入口,則直接拋出錯誤提示后,結(jié)束操作;所述視圖文件查找單元若未查找到對應(yīng)的視圖文件,也直接拋出錯誤提示后,結(jié)束操作。
在上述技術(shù)方案的基礎(chǔ)上,所述系統(tǒng)控制器總目錄下的控制器目錄與所述系統(tǒng)視圖總目錄下的視圖文件目錄一一對應(yīng);所述視圖文件查找單元查找到對應(yīng)的視圖文件的具體過程為:在系統(tǒng)目錄架構(gòu)中的系統(tǒng)視圖總目錄下,找到與所述視圖數(shù)據(jù)獲取單元查找到的控制器目錄對應(yīng)的視圖文件目錄;根據(jù)用戶請求的控制器ID,在找到的視圖文件目錄下找到視圖文件名與控制器ID一致的視圖文件。
在上述技術(shù)方案的基礎(chǔ)上,所述系統(tǒng)目錄架構(gòu)創(chuàng)建單元在創(chuàng)建系統(tǒng)目錄架構(gòu)時,對實現(xiàn)視圖功能的控制器文件單一入口的名稱做了統(tǒng)一定義;所述視圖數(shù)據(jù)獲取單元判定查找到的控制器文件所具有的單一入口為實現(xiàn)視圖功能的入口的具體過程為:判斷查找到的控制器文件的單一入口名是否為定義的實現(xiàn)視圖功能的單一入口的名稱,若是,則判定查找到的控制器文件所具有的單一入口為實現(xiàn)視圖功能的入口。
本發(fā)明的有益效果在于:
1、本發(fā)明中,創(chuàng)建的系統(tǒng)目錄架構(gòu)為多級多組的目錄結(jié)構(gòu),具體來說:系統(tǒng)目錄架構(gòu)包括系統(tǒng)控制器總目錄和系統(tǒng)視圖總目錄;系統(tǒng)控制器總目錄下設(shè)有至少一個控制器目錄,每個控制器目錄下設(shè)有至少一個控制器文件;系統(tǒng)視圖總目錄下設(shè)有至少一個視圖文件目錄,每個視圖文件目錄下設(shè)有至少一個視圖文件。這種多級多組的目錄結(jié)構(gòu)不但使得控制器文件能有條理的組織存放,查找便捷、易于維護,而且能支持無限級的目錄分組,適用性強。除此之外,系統(tǒng)目錄架構(gòu)中的每個控制器文件僅具有單一入口,即每個控制器文件僅實現(xiàn)一個相應(yīng)功能,也就是說單個控制器文件中的功能代碼只有一種,這就使得單個控制器文件不會因業(yè)務(wù)復(fù)雜度的增大而變得過于龐大,從而使得單個控制器文件不但運行效率高且維護簡便。
2、本發(fā)明的系統(tǒng)目錄架構(gòu)中,視圖文件的視圖文件名與控制器ID一致,且系統(tǒng)控制器總目錄下的控制器目錄與系統(tǒng)視圖總目錄下的視圖文件目錄是一一對應(yīng)。視圖文件名與控制器ID一致,使得在進行視圖文件的查找時,可直接根據(jù)用戶請求的控制器ID來進行查找,無需另外獲取其他用戶請求信息,操作方便、快捷;除此之外,由于視圖文件目錄與控制器目錄也是一一對應(yīng)的,因此,本發(fā)明在直接查找視圖文件之前先進行視圖文件目錄的定位,即找到與用戶請求的控制器目錄所對應(yīng)的視圖文件目錄,然后在該視圖文件目錄下再去進行視圖文件的查找,不但提高視圖文件的查找效率且準確率高。
3、本發(fā)明中,對實現(xiàn)視圖功能的控制器文件單一入口的名稱做了統(tǒng)一定義。因此,在進行控制器文件的入口功能判斷時,可直接通過單一入口名來判斷該入口是否為實現(xiàn)視圖功能的入口,判斷過程簡單、方便、高效。
4、本發(fā)明的系統(tǒng)目錄架構(gòu)在包含系統(tǒng)控制器總目錄和系統(tǒng)視圖總目錄的基礎(chǔ)上,還可根據(jù)需要增加實現(xiàn)擴展功能的其他目錄,滿足了系統(tǒng)目錄架構(gòu)的可擴展性要求。
附圖說明
圖1為本發(fā)明實施例中PHP框架下基于分組目錄和單一入口的視圖呈現(xiàn)方法的流程圖;
圖2為本發(fā)明實施例中PHP框架下基于分組目錄和單一入口的視圖呈現(xiàn)系統(tǒng)的結(jié)構(gòu)框圖。
具體實施方式
下面結(jié)合附圖及具體實施例對本發(fā)明作進一步的詳細描述。
參見圖1所示,本發(fā)明實施例提供一種PHP框架下基于分組目錄和單一入口的視圖呈現(xiàn)方法,包括以下步驟:
步驟S1:創(chuàng)建系統(tǒng)目錄架構(gòu),該系統(tǒng)目錄架構(gòu)包括系統(tǒng)控制器總目錄和系統(tǒng)視圖總目錄,系統(tǒng)控制器總目錄下設(shè)有至少一個控制器目錄,每個控制器目錄下設(shè)有至少一個控制器文件,每個控制器文件具有單一入口且與一個控制器ID(控制器唯一性的ID)相匹配;系統(tǒng)視圖總目錄下設(shè)有至少一個視圖文件目錄,每個視圖文件目錄下設(shè)有至少一個視圖文件,每個視圖文件的視圖文件名與控制器ID一致,且所述至少一個視圖文件目錄與所述至少一個控制器目錄一一對應(yīng),轉(zhuǎn)入步驟S2。
可以理解的是,為了滿足系統(tǒng)目錄架構(gòu)的可擴展性,該系統(tǒng)目錄架構(gòu)在包含系統(tǒng)控制器總目錄和系統(tǒng)視圖總目錄的基礎(chǔ)上,還可根據(jù)需要增加實現(xiàn)擴展功能的其他目錄。具體來說,本實施例中創(chuàng)建的系統(tǒng)目錄架構(gòu)如下:
步驟S2:發(fā)起視圖請求,視圖請求中包含有用于尋址的主機域名、用戶請求的控制器目錄和用戶請求的控制器ID,轉(zhuǎn)入步驟S3。
步驟S3:收到視圖請求后,對視圖請求進行解析,得到用戶請求的控制器目錄和用戶請求的控制器ID,轉(zhuǎn)入步驟S4。
可以理解的是,發(fā)起視圖請求時是按照規(guī)定的請求格式進行發(fā)送的,規(guī)定的請求格式為:http://xxx.com/控制器目錄/控制器ID,即前半部分是用于尋址的主機域名,后半部分是我們所需的用戶請求的控制器目錄和用戶請求的控制器ID。步驟S3中,對視圖請求進行解析時,先通過截取視圖請求的字符串,得到控制器目錄與控制器ID整合在一起的內(nèi)容;再根據(jù)控制器目錄與控制器ID之間的斜線分割符“/”,分別得到用戶請求的控制器目錄部分和用戶請求的控制器ID部分。
步驟S4:根據(jù)用戶請求的控制器目錄,在系統(tǒng)目錄架構(gòu)中的系統(tǒng)控制器總目錄下查找對應(yīng)的控制器目錄,若查找到,則匹配成功,轉(zhuǎn)入步驟S5;若未查找到,則拋出錯誤提示后,結(jié)束。
步驟S5:根據(jù)用戶請求的控制器ID,在查找到的控制器目錄下查找與該控制器ID相匹配的控制器文件,若查找到,則匹配成功,轉(zhuǎn)入步驟S6;若為查找到,則拋出錯誤提示后,結(jié)束。
步驟S6:判斷查找到的控制器文件所具有的單一入口是否為實現(xiàn)視圖功能的入口,若是,轉(zhuǎn)入步驟S7;否則,拋出錯誤提示后,結(jié)束。本實施例中,對實現(xiàn)視圖功能的控制器文件單一入口的名稱做了統(tǒng)一定義,即統(tǒng)一定義為“execute”。在進行控制器文件的入口功能判斷時,可直接通過單一入口名來判斷該入口是否為實現(xiàn)視圖功能的入口,即直接判斷該單一入口名是否為“execute”即可,判斷過程簡單、方便、高效。
步驟S7:通過所述單一入口執(zhí)行控制器文件中的功能代碼,獲取到呈現(xiàn)視圖頁面所需的視圖數(shù)據(jù),轉(zhuǎn)入步驟S8。
步驟S8:根據(jù)用戶請求的控制器ID,在系統(tǒng)目錄架構(gòu)中的系統(tǒng)視圖總目錄下查找對應(yīng)的視圖文件,若查找到,轉(zhuǎn)入步驟S9;若未查找到,則拋出錯誤提示后,結(jié)束。
可以理解的是,由于視圖文件的視圖文件名是與控制器ID一致的,因此,在進行視圖文件的查找時,可直接根據(jù)用戶請求的控制器ID來進行查找。除此之外,由于視圖文件目錄與控制器目錄也是一一對應(yīng)的,因此,為了提高視圖文件的查找效率和正確率,可在直接查找視圖文件之前先進行視圖文件目錄的定位,即找到與用戶請求的控制器目錄所對應(yīng)的視圖文件目錄。具體來說,步驟S8中所述根據(jù)用戶請求的控制器ID,在系統(tǒng)目錄架構(gòu)中的系統(tǒng)視圖總目錄下查找對應(yīng)的視圖文件,具體包括以下操作:
步驟S801:在系統(tǒng)目錄架構(gòu)中的系統(tǒng)視圖總目錄下,找到與步驟S4查找到的控制器目錄相對應(yīng)的一個視圖文件目錄,轉(zhuǎn)入步驟S802;
步驟S802:根據(jù)用戶請求的控制器ID,在找到的視圖文件目錄下查找視圖文件名與控制器ID一致的視圖文件。
步驟S9:利用查找到的視圖文件和獲取到的視圖數(shù)據(jù),進行視圖頁面的呈現(xiàn),結(jié)束。
參見圖2所示,本發(fā)明實施例還提供一種PHP框架下基于分組目錄和單一入口的視圖呈現(xiàn)系統(tǒng),包括系統(tǒng)目錄架構(gòu)創(chuàng)建單元、視圖請求發(fā)起單元、視圖請求解析單元、視圖數(shù)據(jù)獲取單元、視圖文件查找單元和視圖頁面呈現(xiàn)單元。
其中,系統(tǒng)目錄架構(gòu)創(chuàng)建單元用于:創(chuàng)建系統(tǒng)目錄架構(gòu),該系統(tǒng)目錄架構(gòu)包括系統(tǒng)控制器總目錄和系統(tǒng)視圖總目錄,系統(tǒng)控制器總目錄下設(shè)有至少一個控制器目錄,每個控制器目錄下設(shè)有至少一個控制器文件,每個控制器文件具有單一入口且與一個控制器ID相匹配;系統(tǒng)視圖總目錄下設(shè)有至少一個視圖文件目錄,每個視圖文件目錄下設(shè)有至少一個視圖文件,每個視圖文件的視圖文件名與控制器ID一致,且系統(tǒng)控制器總目錄下的控制器目錄與系統(tǒng)視圖總目錄下的視圖文件目錄一一對應(yīng);
視圖請求發(fā)起單元用于:向視圖請求解析單元發(fā)起視圖請求,所述視圖請求中包括主機域名、用戶請求的控制器目錄和用戶請求的控制器ID;
視圖請求解析單元用于:收到視圖請求后,對視圖請求進行解析,得到用戶請求的控制器目錄和用戶請求的控制器ID;
視圖數(shù)據(jù)獲取單元用于:根據(jù)用戶請求的控制器目錄,在所述系統(tǒng)控制器總目錄下查找到對應(yīng)的控制器目錄;在查找到的控制器目錄下根據(jù)用戶請求的控制器ID查找到與該控制器ID相匹配的控制器文件;判定查找到的控制器文件所具有的單一入口為實現(xiàn)視圖功能的入口后,通過所述單一入口執(zhí)行控制器文件中的功能代碼,獲取到呈現(xiàn)視圖頁面所需的視圖數(shù)據(jù);
視圖文件查找單元用于:根據(jù)用戶請求的控制器ID,在所述系統(tǒng)視圖總目錄下查找到對應(yīng)的視圖文件;
視圖頁面呈現(xiàn)單元用于:利用查找到的視圖文件和獲取到的視圖數(shù)據(jù),進行視圖頁面的呈現(xiàn)。
需要說明的是:上述實施例提供的系統(tǒng)在進行操作時,僅以上述各功能模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將系統(tǒng)的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。
本發(fā)明不局限于上述實施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發(fā)明的保護范圍之內(nèi)。
本說明書中未作詳細描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。