2022-09-26 13:41:29 - 米境通跨境電商
研究了兩天opencart,對(duì)其中的實(shí)現(xiàn)原理做個(gè)小結(jié),和各位共同探討下:
opencart是自有開(kāi)發(fā)的一套架構(gòu),其實(shí)現(xiàn)思想也是基于MVC的一種方式,架構(gòu)的核心在system/engine下面,包括了幾個(gè)文件,
1):controller.php所有控制器的基類(lèi)
2):action.php動(dòng)作轉(zhuǎn)向,也就是路徑,比如catalog下面的類(lèi)ControllerAccountAddress就是對(duì)于account/address
3):front.php前端動(dòng)作執(zhí)行文件,這個(gè)是在action.php基礎(chǔ)上進(jìn)行的操作,也就是相當(dāng)于action.php是加載了數(shù)據(jù),而front.php是動(dòng)作,負(fù)責(zé)執(zhí)行的。
4):loader.php這個(gè)是加載相關(guān)的類(lèi)庫(kù)文件,包括database下的,model下的,library下的文件,調(diào)用方法就是$this->load->library("library下的文件名“)
其他參考loader.php文件,比如model,$this->load->model("account/address");
5):model.php這個(gè)文件是所有model的基類(lèi),不作多說(shuō)明。
6):registry.php這個(gè)文件的實(shí)現(xiàn)和Model.php一樣,這個(gè)類(lèi)Registry是整個(gè)系統(tǒng)的信息中樞,Registry是一個(gè)單例(Singleton),在index.php起始頁(yè)面中,
首先作為構(gòu)造函數(shù)參數(shù)傳值所要用到的類(lèi)創(chuàng)建類(lèi)實(shí)例,并隨之將這個(gè)類(lèi)實(shí)例設(shè)置到這個(gè)“注冊(cè)表”中,
這個(gè)注冊(cè)表就像是一個(gè)共享的數(shù)據(jù)總線一樣,把各個(gè)模塊/數(shù)據(jù)串聯(lián)在一起。
在System下有一些公共類(lèi),所以的基礎(chǔ)類(lèi)和公共類(lèi)都是通過(guò)index.php去加載的,也就是Registry注冊(cè)的,這樣你就可以去加載你需要的類(lèi)和文件了。