之前和朋友一塊學(xué)過夠語言,作為系統(tǒng)級別的語言,沒有一定的功力和系統(tǒng)編程 經(jīng)驗,很難快速的搭建起來可堪來用的代碼塊

剛好在公司在用ThinkPHp,這個框架還算是友好,比較靈活。加上PHP的很多函數(shù)感覺沒怎么用過,正好看看如何利用一些函數(shù)搭建起來一套系統(tǒng)。雖然跟著老師創(chuàng)業(yè)的時候?qū)懥艘欢螘r間原生PHP
直接進(jìn)入代碼:
再次學(xué)習(xí)TP 用戶URL請求 調(diào)用應(yīng)用入口文件 載入框架入口文件*******THINKPHP.php 記錄初始化運(yùn)行時間和內(nèi)存開銷 系統(tǒng)常量判斷和定義 載入框架引導(dǎo)類*******Think/Think 執(zhí)行Think::start 方法進(jìn)行應(yīng)用初始化 設(shè)置錯誤處理機(jī)制和自動加載機(jī)制 調(diào)用Think/Storage類進(jìn)行存儲初始化*******STORAGE_TYPE常量定義存儲類型 部署模式下*******如果存在應(yīng)用編譯緩存文件*******則直接加載(直接到達(dá)22) 讀取應(yīng)用模式*******APP_MODE常量*******的定義文件 加載當(dāng)前應(yīng)用模式定義的核心文件*******ThinkPHP/Mode/common.php 加載慣例配置文件*******ThinkPHP/Conf/convention.php 加載應(yīng)用配置文件*******Application/Common/Conf/config.php 加載系統(tǒng)別名定義 判斷并且讀取應(yīng)用別名定義文件Application/Common/Conf/alias.php 加載系統(tǒng)行為定義 判斷并且讀取應(yīng)用行為定義文件Application/Common/Conf/tags.php 加載框架底層語言包ThinkPHP/lang/zh-cn.php 如果是部署模式則生成應(yīng)用編譯緩存文件 加載調(diào)試模式配置文件ThinkPhP/Conf/debug.php 判斷并且讀取應(yīng)用的調(diào)試配置文件Application/Common/Conf/debug.php 這是第22步 判斷應(yīng)用狀態(tài)并且讀取狀態(tài)配置文件*******APP_STATUS不為空 檢測應(yīng)用目錄結(jié)構(gòu)并且自動生成*******CHECK_APP_DIR配置開啟并且RUNTIME——PATH目錄不存在 調(diào)用THINK/App類的run方法啟動應(yīng)用 應(yīng)用初始化*******APP_INIT*******標(biāo)簽位監(jiān)聽并且執(zhí)行綁定行為 判斷并且加載動態(tài)配置和函數(shù)文件 調(diào)用Think/Dispatcher::dispatch方法進(jìn)行URL請求調(diào)整 自動識別兼容URL 模式和命令行模式下的$_SERVER['PATH_INFO']參數(shù) 檢測域名部署以及完成模塊和控制器的綁定操作*******APP_SUB_DOMAIN_DEPLOY參數(shù)開啟 分析 URL地址中的PATH_INFO信息 獲取請求的模塊信息 檢測模塊是否存在和允許訪問 判斷并且加載模塊文件、別名定義、行為定義以及函數(shù)文件 判斷并且加載模塊的動態(tài)配置和函數(shù)文件 模塊的URL模式判斷 模塊的路由檢測*******URL_ROUTE_ON開啟 PATH_INFO處理標(biāo)簽位偵聽并且執(zhí)行綁定行為 URL后綴檢測*******URL_DENY_SUFFIX以及URL_HTML_SUFFIX處理 獲取當(dāng)前控制器和操作以及URL其他參數(shù) URL請求調(diào)度額按成*******URL_DISPATCH*******標(biāo)簽位偵聽并且執(zhí)行綁定行為 應(yīng)用開始*******APP_BEGIN*******標(biāo)簽位偵聽并且執(zhí)行綁定行為 調(diào)用SESSION_OPTIONS配置參數(shù)進(jìn)行SESSION初始化(非命令行模式) 根據(jù)請求執(zhí)行控制器方法 如果控制器不存在則檢測空控制器是否存在 控制器開始*******ACTION_BEGIN*******標(biāo)簽位偵聽并且執(zhí)行綁定行為 默認(rèn)調(diào)用系統(tǒng)的ReadHtmlCache行為讀取靜態(tài)緩存*******HTML_CACHE_ON開啟 判斷并且調(diào)用控制器的_initialize初始化方法 判斷操作方法是否存在,如果不存在就檢測是否定義空操作方法 判斷前置操作方法是否定義,有的話執(zhí)行 Action參數(shù)綁定檢測,自動匹配操作方法的參數(shù) 如果有模板渲染*******display 視圖開始*******view_begin*******標(biāo)簽位偵聽并且執(zhí)行綁定行為 調(diào)用Think/view的fetch方法解析并且獲取模板內(nèi)容 自動識別當(dāng)前主題以及定位模板文件 視圖解析*******view_parse*******標(biāo)簽位偵聽并且執(zhí)行綁定行為 默認(rèn)調(diào)用內(nèi)置ParseTemplate行為解析模板 模板引擎解析模板內(nèi)容生成模板緩存 模板過濾替換*******template_filter*******標(biāo)簽位偵聽并且執(zhí)行綁定行為 默認(rèn)調(diào)用系統(tǒng)的ContentReplace行為進(jìn)行模板替換 輸出內(nèi)容過濾*******view_filter******* 調(diào)用默認(rèn)的WriteHtmlCache行為寫入靜態(tài)緩存*******HTML_CACHE_ON開啟 調(diào)用Think/View類的render方法渲染內(nèi)容 視圖結(jié)束*******view_end*******標(biāo)簽位偵聽并且執(zhí)行綁定行為 判斷后置操作方法是否定義,有的話執(zhí)行 控制器結(jié)束action_end標(biāo)簽位偵聽并且執(zhí)行綁定行為 應(yīng)用結(jié)束*******app_end*******標(biāo)簽位偵聽并且執(zhí)行綁定行為 執(zhí)行系統(tǒng)的ShowPageTrace行為 日志信息存儲寫入
這是一整個流程,也算是一個思路(一般整體熟悉下來,三天內(nèi)邊工作邊看足夠了,一個很基礎(chǔ)但是很有學(xué)習(xí)的思路)
系統(tǒng)的靈活性在于鉤子的使用,分布廣泛的標(biāo)簽。
MVC三部分以及應(yīng)用,路由,URL解析,都有標(biāo)簽位進(jìn)行偵聽。所有的系統(tǒng)實現(xiàn)方法,都可以引進(jìn)去第三方,就直接修改鉤子的執(zhí)行邏輯
印象中用的最多的幾個PHP內(nèi)置函數(shù)
is_file,isset,empty,is_dir,is_array
strtolower,strtoupper
strpos,str_replace,preg_match
explode,implode
substr(A,-strlen(B))
var_export,realpath
define,defined
class_exists,method_exists
call_user_func
array_slice,array_shift,array_pop,array_merge,array_search
array_slice(explode('.',$_SERVER['HTTP_HOST']),0,-3);
ob_start() ob_end_clean(),ob_get_client()
array_walk_recursive
ReflectionException這個類
parse_str,pathinfo,strip_tags,dirname
trim,ucfirst
preg_replace_callback('/(\w+)\/([^\/]+)/', function($match) use($var){
$var[$match[1]]=strip_tags($match[2]);
}, implode('/',$paths));
應(yīng)該就這么多30多個,足夠撐起來一個系統(tǒng),之間的邏輯組合還是有很強(qiáng)的邏輯性
還是那句話,當(dāng)我們心中有了大廈的樣子,自然就可以建造起來一棟樓。用到的函數(shù)雖然不多,但是足夠了。這也許就是一種魅力吧。go語言寫出來的系統(tǒng)服務(wù)也許是一樣的,awk&sed寫出來的腳本也是如此吧,Python和perl和php在處理文本數(shù)據(jù)上的感覺也是如此吧。更多的語言,一樣的道理
對于程序員方便的框架等,一定是以性能,效率,空間為代價的。單線程也許更加適合馮諾依曼的計算機(jī)結(jié)構(gòu)。什么時候計算機(jī)結(jié)構(gòu)發(fā)生新的設(shè)計思路,也許會突破現(xiàn)有的一些性能瓶頸。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)頁標(biāo)題:ThinkPHP核心框架實現(xiàn)-創(chuàng)新互聯(lián)
文章鏈接:http://www.chinadenli.net/article32/djdopc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、關(guān)鍵詞優(yōu)化、響應(yīng)式網(wǎng)站、自適應(yīng)網(wǎng)站、小程序開發(fā)、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容