欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

PHP搭建自己的web框架的方法

本篇內(nèi)容主要講解“PHP搭建自己的web框架的方法”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“PHP搭建自己的web框架的方法”吧!

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),雜多網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:雜多等地區(qū)。雜多做網(wǎng)站價(jià)格咨詢:13518219792

這里講的WEB是指運(yùn)行在apache下的PHP WEB程序。

首先要理解PHP在apache下的運(yùn)行機(jī)制和請(qǐng)求的生命周期。

PHP是腳本語(yǔ)言,它的執(zhí)行過(guò)程就是從文件入口,一直到文件的最后的結(jié)尾,其中可以包含或引用其它文件,是面向過(guò)程的。在過(guò)程當(dāng)中,可以使用對(duì)象來(lái)實(shí)現(xiàn)各種需要的邏輯處理。你可以把一個(gè)或者多個(gè)對(duì)象拿來(lái)完成所需要的功能,你也可以告訴一個(gè)對(duì)象你要完成什么功能,這是面向?qū)ο蟮拈_發(fā)方法,也是普遍的開發(fā)方法。所以,在面向過(guò)程的運(yùn)行機(jī)制中,使用面向?qū)ο蟮拈_發(fā)方式。

每一個(gè)HTTP請(qǐng)求的生命周期也是從入口開始,直到程序結(jié)束,其中的變量將不復(fù)存在,不同的HTTP請(qǐng)求的變量都是獨(dú)立互不影響的。我們可使用global聲明、$GLOBALS全局?jǐn)?shù)組變量、static靜態(tài)變量在同一HTTP請(qǐng)求中共享數(shù)據(jù);使用session來(lái)實(shí)現(xiàn)會(huì)話級(jí)別的共享;使用緩存來(lái)實(shí)現(xiàn)站點(diǎn)全局?jǐn)?shù)據(jù)共享。global聲明一般在方法中,在面向過(guò)程的開發(fā)中使用,平時(shí)不會(huì)用到。$GLOBALS和static經(jīng)常會(huì)用到,但不能直接操作,而是在對(duì)象里或?qū)iT的方法來(lái)管理,比如常用的單例模式使用$GLOBALS和static保存。

PHP程序中,我們都會(huì)考慮盡量使框架簡(jiǎn)潔、高效、清晰、易用,這對(duì)開發(fā)和維護(hù)都很有好處。

基本的程序模式使用MVC模式,分層分模塊、同時(shí)需要一個(gè)好用的URL router配合MVC。

       URL router:很關(guān)鍵的一個(gè)組件,決定著源碼文件的組織結(jié)構(gòu)、代碼的清晰度。一個(gè)好的router,能方便地找到邏輯入口,體現(xiàn)框架的易用性。

       Model:一直用數(shù)組。用數(shù)組主要擔(dān)心數(shù)組內(nèi)容不清楚,在項(xiàng)目中,屬性參考數(shù)據(jù)庫(kù)字段,因此數(shù)組內(nèi)容還是相對(duì)明確的,Model的操作使用數(shù)據(jù)訪問層DAO封裝。數(shù)據(jù)庫(kù)訪問中,直接轉(zhuǎn)化為數(shù)組形式,也比較高效。對(duì)于其它系統(tǒng)的交互數(shù)據(jù)對(duì)象,一般有接口文檔定義。對(duì)于ORM中的Active Record技術(shù),能不用還是不用的好。

       View:開始使用smarty,但在性能報(bào)告中,smarty執(zhí)行的方法耗時(shí)占比太多太多,后來(lái)使用tmd_tpl,就一個(gè)文件,簡(jiǎn)單易用高效,易修改。在視圖模板中,結(jié)合PHP語(yǔ)法,并輔于模板變量。MVC的思想是分離,并不代表不能在View中使用PHP語(yǔ)法。如果是API接口,可以直接把數(shù)據(jù)轉(zhuǎn)化為具體格式結(jié)果并返回。

       Controller:或者action,代表著一個(gè)行為、一個(gè)方法、一個(gè)接口。只有一層的controller往往是不夠用的,一般要分成接口層、業(yè)務(wù)層、數(shù)據(jù)訪問層,可能還需要通信層。接口負(fù)責(zé)參數(shù)校驗(yàn)、接入權(quán)限控制,調(diào)用具體的業(yè)務(wù),最后返回?cái)?shù)據(jù)或顯示頁(yè)面等。所有的業(yè)務(wù)最好都以接口層開始,在這之前應(yīng)只做框架方面的事情,當(dāng)我們需要閱讀某個(gè)業(yè)務(wù)實(shí)現(xiàn)時(shí),只要順著接口層入口開始讀即可。業(yè)務(wù)層是執(zhí)行實(shí)際的業(yè)務(wù)功能,業(yè)務(wù)層從數(shù)據(jù)訪問層獲得數(shù)據(jù)并進(jìn)行業(yè)務(wù)上加工處理。數(shù)據(jù)訪問層從數(shù)據(jù)庫(kù)或調(diào)用接口獲取數(shù)據(jù),可進(jìn)行簡(jiǎn)單的數(shù)據(jù)轉(zhuǎn)換處理。如果PHP只是作為數(shù)據(jù)展示前端,后端由C/C++/GO等執(zhí)行業(yè)務(wù),那只需要封裝業(yè)務(wù)層,在業(yè)務(wù)層里把數(shù)據(jù)請(qǐng)求到后端,然后返回給接口層。

PHP搭建自己的web框架的方法         PHP搭建自己的web框架的方法

以上是程序的基本框架結(jié)構(gòu),或者說(shuō)是業(yè)務(wù)的流程結(jié)構(gòu),通常作為系統(tǒng)最重要的部分。但離實(shí)用還有距離,還有很多基礎(chǔ)功能要增加,比如session的處理,數(shù)據(jù)庫(kù)訪問,日志處理等功能。這些基本功能一般是可以獨(dú)立于框架的,可以在不同的框架上應(yīng)用。功能類不要與框架耦合太緊,一般使用組合方式。我們將這些基礎(chǔ)功能按照用起來(lái)順手的方式封裝成核心類,使用單例或多例來(lái)調(diào)用,或?qū)︻愡M(jìn)一步封裝成全局使用的方法,方便使用。

PHP搭建自己的web框架的方法

如上圖,中心把握好、梳理好了,體現(xiàn)的是業(yè)務(wù)能力,因?yàn)殡S著業(yè)務(wù)發(fā)展,自然會(huì)形成業(yè)務(wù)分層的結(jié)構(gòu);而周邊結(jié)合得好,體現(xiàn)的是框架能力,如何用得/開發(fā)得舒適順手的問題。

在調(diào)用功能類或者業(yè)務(wù)類時(shí),都會(huì)涉及到類的加載或?qū)雴栴}。那是否使用自動(dòng)加載功能呢?根據(jù)個(gè)人體驗(yàn)和IDE支持程度,我覺得不直觀,對(duì)IDE不友好,如F3找不到定義的方法,這是我們開源系統(tǒng)學(xué)習(xí)的感受,還有對(duì)性能的影響。還是直接require/include方便,雖然多寫了些代碼,但確實(shí)對(duì)開發(fā)維護(hù)閱讀帶了極大的方便(除了修改名稱后導(dǎo)致引用變更不很方便,但可通過(guò)全局搜索來(lái)修改)。一些公共的類在入口里全局引用,業(yè)務(wù)類按需引用。性能損失?因?yàn)闃I(yè)務(wù)大部分時(shí)候都是垂直的,一般使用require/include即可,不需要require_once/include_once,即使多使用幾個(gè)once也沒什么關(guān)系,首先可保證正確性,且程序總體性能不是這個(gè)決定的。自動(dòng)加載會(huì)增加很多判斷、指令還有棧操作,文件的查找、損失的性能更多吧。不過(guò)一個(gè)好的自動(dòng)加載實(shí)現(xiàn)還是可以考慮引入的,業(yè)務(wù)類的文件可以考慮,框架性的文件不使用自動(dòng)加載,并且要簡(jiǎn)單、定位準(zhǔn)確、高效、避免重復(fù)。

加載后怎么使用?方法、類對(duì)象方法還是類靜態(tài)方法調(diào)用?根據(jù)不同的場(chǎng)景決定。全局功能一般是方法調(diào)用,如thinkPHP獲取配置內(nèi)容的C方法,直接調(diào)用。如果在分層中,接口層->業(yè)務(wù)層->數(shù)據(jù)訪問層,使用類靜態(tài)方法調(diào)用。一些全局功能操作,如數(shù)據(jù)庫(kù)操作類、一些第三方功能類、多態(tài)功能類,這些一般使用單例來(lái)使用,不需要多次產(chǎn)生新對(duì)象。

關(guān)于反射功能,注解,IOC,面向切面編程等在其它語(yǔ)言中很有用的功能和實(shí)踐,在PHP也基本能實(shí)現(xiàn),雖然也看了很多實(shí)踐例子,但并沒有考慮運(yùn)用到項(xiàng)目之中,能實(shí)現(xiàn)并不代表一定要用。LAMP能方便地開發(fā)一個(gè)網(wǎng)站,且一般是做網(wǎng)站應(yīng)用,與做一個(gè)框架(如spring)是有區(qū)別的,因此對(duì)PHP的使用更多是關(guān)注網(wǎng)站的業(yè)務(wù)流程及其性能上,使業(yè)務(wù)流程清晰易于維護(hù),使靈活性不至于復(fù)雜化業(yè)務(wù)、損害性能。高性能網(wǎng)站需要短平快,更何況很多網(wǎng)站是PHP做前端渲染,c/c++/java做后臺(tái)業(yè)務(wù),所以PHP網(wǎng)站就應(yīng)盡量簡(jiǎn)單。因?yàn)槲覀兪且粋€(gè)業(yè)務(wù)網(wǎng)站系統(tǒng),業(yè)務(wù)流程是確定的,執(zhí)行是從頭到尾的,體現(xiàn)在代碼上是業(yè)務(wù)代碼要清晰的,如果在執(zhí)行過(guò)程中被反射了一把,注入了一把,會(huì)影響人對(duì)業(yè)務(wù)的理解,同時(shí)開發(fā)維護(hù)BUG定位的時(shí)候也可能忽視框架動(dòng)了什么手腳。不像一些通用的框架或者第三方包,需要足夠的靈活供調(diào)用,靈活性就比較繞,還要犧牲一定的性能。使用這些功能,往往事先都要做一些初始化代碼,或者一些配置初始化,并且每個(gè)HTTP請(qǐng)求都要執(zhí)行一次,即使再簡(jiǎn)單的功能,沒有必要,不像java那樣只初始化一次。比如一些restfull框架會(huì)在入口處定義路由,還有大量的配置,這個(gè)雖然有一定的清晰靈活度,但這種情況下建議使用約定優(yōu)于配置的思想。

以上的一些做法有些與眾不同或極端,但是也是經(jīng)歷過(guò)原始-->框架(高級(jí)特性,技巧)-->回歸原始的過(guò)程,可以理解為個(gè)人的獨(dú)特感受或經(jīng)驗(yàn)。使用PHP的基本特性,從項(xiàng)目入手、業(yè)務(wù)流程理解、到開發(fā)維護(hù),都使人輕松。性能方面沒有過(guò)多損耗,也能方便定位優(yōu)化??傊己?jiǎn)單是對(duì)性能最好的提升;業(yè)務(wù)垂直隔離地編寫,一眼就看出做了什么是對(duì)開發(fā)效率的提升。

如果一開始沒有能力按項(xiàng)目要求開發(fā)自己的PHP框架,那么在第一次使用一個(gè)框架后,在其它項(xiàng)目中就應(yīng)考慮自己按需實(shí)現(xiàn)網(wǎng)站,并形成自己的框架。

我覺得最簡(jiǎn)單好上手的PHP網(wǎng)站框架,需要一個(gè)路由、一個(gè)控制器配合一個(gè)視圖模板引擎。其它功能模塊則按需添加。

到此,相信大家對(duì)“PHP搭建自己的web框架的方法”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

網(wǎng)站題目:PHP搭建自己的web框架的方法
標(biāo)題鏈接:http://chinadenli.net/article44/gphjee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、軟件開發(fā)搜索引擎優(yōu)化、微信公眾號(hào)響應(yīng)式網(wǎng)站、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
成人精品视频在线观看不卡| 亚洲黄色在线观看免费高清 | 欧美一区二区三区性视频| 色一情一乱一区二区三区码| 国产精品刮毛视频不卡| 人妻内射精品一区二区| 中文字幕在线区中文色| 日韩视频在线观看成人| 天堂av一区一区一区| 欧美一二三区高清不卡| 91日韩在线视频观看| 亚洲欧美日本视频一区二区| 国产又粗又猛又大爽又黄同志 | 丰满少妇被猛烈插入在线观看| 日韩精品福利在线观看| 欧美成人免费夜夜黄啪啪| 国产一级内射麻豆91| 亚洲高清中文字幕一区二三区| 国产内射一级一片内射高清视频| 国产二级一级内射视频播放| 亚洲永久一区二区三区在线| 色一情一伦一区二区三| 国产丝袜极品黑色高跟鞋| 亚洲欧美日韩熟女第一页| 久久精品色妇熟妇丰满人妻91| 办公室丝袜高跟秘书国产| 夫妻激情视频一区二区三区| 黄男女激情一区二区三区| 久久精品国产99国产免费| 一区二区三区日韩在线| 精品视频一区二区三区不卡| 亚洲精品偷拍一区二区三区 | 亚洲天堂一区在线播放| 欧美黑人巨大一区二区三区 | 日本少妇中文字幕不卡视频| 91亚洲国产成人久久| 深夜少妇一区二区三区| 精品综合欧美一区二区三区| 欧美加勒比一区二区三区| 91天堂免费在线观看| 好吊一区二区三区在线看|