您好,登錄后才能下訂單哦!
之前和朋友一塊學過夠語言,作為系統級別的語言,沒有一定的功力和系統編程 經驗,很難快速的搭建起來可堪來用的代碼塊
剛好在公司在用ThinkPHp,這個框架還算是友好,比較靈活。加上PHP的很多函數感覺沒怎么用過,正好看看如何利用一些函數搭建起來一套系統。雖然跟著老師創業的時候寫了一段時間原生PHP
直接進入代碼:
再次學習TP 用戶URL請求 調用應用入口文件 載入框架入口文件*******THINKPHP.php 記錄初始化運行時間和內存開銷 系統常量判斷和定義 載入框架引導類*******Think/Think 執行Think::start 方法進行應用初始化 設置錯誤處理機制和自動加載機制 調用Think/Storage類進行存儲初始化*******STORAGE_TYPE常量定義存儲類型 部署模式下*******如果存在應用編譯緩存文件*******則直接加載(直接到達22) 讀取應用模式*******APP_MODE常量*******的定義文件 加載當前應用模式定義的核心文件*******ThinkPHP/Mode/common.php 加載慣例配置文件*******ThinkPHP/Conf/convention.php 加載應用配置文件*******Application/Common/Conf/config.php 加載系統別名定義 判斷并且讀取應用別名定義文件Application/Common/Conf/alias.php 加載系統行為定義 判斷并且讀取應用行為定義文件Application/Common/Conf/tags.php 加載框架底層語言包ThinkPHP/lang/zh-cn.php 如果是部署模式則生成應用編譯緩存文件 加載調試模式配置文件ThinkPhP/Conf/debug.php 判斷并且讀取應用的調試配置文件Application/Common/Conf/debug.php 這是第22步 判斷應用狀態并且讀取狀態配置文件*******APP_STATUS不為空 檢測應用目錄結構并且自動生成*******CHECK_APP_DIR配置開啟并且RUNTIME——PATH目錄不存在 調用THINK/App類的run方法啟動應用 應用初始化*******APP_INIT*******標簽位監聽并且執行綁定行為 判斷并且加載動態配置和函數文件 調用Think/Dispatcher::dispatch方法進行URL請求調整 自動識別兼容URL 模式和命令行模式下的$_SERVER['PATH_INFO']參數 檢測域名部署以及完成模塊和控制器的綁定操作*******APP_SUB_DOMAIN_DEPLOY參數開啟 分析 URL地址中的PATH_INFO信息 獲取請求的模塊信息 檢測模塊是否存在和允許訪問 判斷并且加載模塊文件、別名定義、行為定義以及函數文件 判斷并且加載模塊的動態配置和函數文件 模塊的URL模式判斷 模塊的路由檢測*******URL_ROUTE_ON開啟 PATH_INFO處理標簽位偵聽并且執行綁定行為 URL后綴檢測*******URL_DENY_SUFFIX以及URL_HTML_SUFFIX處理 獲取當前控制器和操作以及URL其他參數 URL請求調度額按成*******URL_DISPATCH*******標簽位偵聽并且執行綁定行為 應用開始*******APP_BEGIN*******標簽位偵聽并且執行綁定行為 調用SESSION_OPTIONS配置參數進行SESSION初始化(非命令行模式) 根據請求執行控制器方法 如果控制器不存在則檢測空控制器是否存在 控制器開始*******ACTION_BEGIN*******標簽位偵聽并且執行綁定行為 默認調用系統的ReadHtmlCache行為讀取靜態緩存*******HTML_CACHE_ON開啟 判斷并且調用控制器的_initialize初始化方法 判斷操作方法是否存在,如果不存在就檢測是否定義空操作方法 判斷前置操作方法是否定義,有的話執行 Action參數綁定檢測,自動匹配操作方法的參數 如果有模板渲染*******display 視圖開始*******view_begin*******標簽位偵聽并且執行綁定行為 調用Think/view的fetch方法解析并且獲取模板內容 自動識別當前主題以及定位模板文件 視圖解析*******view_parse*******標簽位偵聽并且執行綁定行為 默認調用內置ParseTemplate行為解析模板 模板引擎解析模板內容生成模板緩存 模板過濾替換*******template_filter*******標簽位偵聽并且執行綁定行為 默認調用系統的ContentReplace行為進行模板替換 輸出內容過濾*******view_filter******* 調用默認的WriteHtmlCache行為寫入靜態緩存*******HTML_CACHE_ON開啟 調用Think/View類的render方法渲染內容 視圖結束*******view_end*******標簽位偵聽并且執行綁定行為 判斷后置操作方法是否定義,有的話執行 控制器結束action_end標簽位偵聽并且執行綁定行為 應用結束*******app_end*******標簽位偵聽并且執行綁定行為 執行系統的ShowPageTrace行為 日志信息存儲寫入
這是一整個流程,也算是一個思路(一般整體熟悉下來,三天內邊工作邊看足夠了,一個很基礎但是很有學習的思路)
系統的靈活性在于鉤子的使用,分布廣泛的標簽。
MVC三部分以及應用,路由,URL解析,都有標簽位進行偵聽。所有的系統實現方法,都可以引進去第三方,就直接修改鉤子的執行邏輯
印象中用的最多的幾個PHP內置函數
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));
應該就這么多30多個,足夠撐起來一個系統,之間的邏輯組合還是有很強的邏輯性
還是那句話,當我們心中有了大廈的樣子,自然就可以建造起來一棟樓。用到的函數雖然不多,但是足夠了。這也許就是一種魅力吧。go語言寫出來的系統服務也許是一樣的,awk&sed寫出來的腳本也是如此吧,Python和perl和php在處理文本數據上的感覺也是如此吧。更多的語言,一樣的道理
對于程序員方便的框架等,一定是以性能,效率,空間為代價的。單線程也許更加適合馮諾依曼的計算機結構。什么時候計算機結構發生新的設計思路,也許會突破現有的一些性能瓶頸。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。