1、如何理解ThinkPHP中的單一入口文件?
ThinkPHP使用單一入口模式進行項目部署和訪問,使用ThinkPHP框架,無論做什么項目,都會有一個唯一的入口文件,這個文件就是這個項目的起點,進入項目后,再進行其他操作。
一般的,入口文件都會包含三部分內(nèi)容:
必須的:
立即學習“PHP免費學習筆記(深入)”;
? ? 1.載入框架入口文件
可選的:
? ? 2.定義框架路徑、項目路徑和項目名稱
? ? 3.定義調(diào)試模式、運行模式的相關常量
?相關專題推薦:2020年thinkphp面試題及答案(大全)
2、ThinkPHP中的MVC分層是什么
MVC設計思想是一種抽象的概念,核心是把應用程序的邏輯層和視圖層分開。
ThinkPHP中用到MVC的大致體現(xiàn)在是:
模型(M):Model數(shù)據(jù)處理類;
控制器(C):應用控制器(核心控制器App類)和Action控制器都承擔了控制器的角色,Action控制器完成業(yè)務控制,應用控制器完成調(diào)度控制。
視圖(V):由View類和視圖模板文件組成。
在ThinkPHP中,做到了不依賴M或者V ,也就是說沒有模型或者視圖也一樣可以工作。甚至也不依賴C,這是因為ThinkPHP在Action之上還有一個總控制器,即App控制器,負責應用的總調(diào)度。在沒有C的情況下,必然存在視圖V,否則就不再是一個完整的應用。
3、如何理解ThinkPHP架構(核心+行為+驅(qū)動(CBD))
核心:ThinkPHP的核心代碼,MVC構架等等;
行為:ThinkPHP框架自帶的一些方法、預留的一些拓展位置等;
驅(qū)動:ThinkPHP已構建好的數(shù)據(jù)庫驅(qū)動、緩存驅(qū)動、標簽庫驅(qū)動、模板引擎驅(qū)動等等,以及一些外置拓展;在開發(fā)過程中,可以直接使用它的這些驅(qū)動,簡單高效。
4、ThinkPHP如何防止SQL注入
ThinkPHP架構設計的時候,進行了一些防SQL注入的操作。
主要需要注意的地方有:
sql操作能用Array操作就用Array
必須用Sql語句進行操作時,對用戶輸入的內(nèi)容進行預判;例如,數(shù)值類型強制轉(zhuǎn)換、SQL關鍵字檢查、正則表達式匹配等。
5、如何開啟調(diào)試模式?調(diào)試模式有什么好處?
開啟調(diào)試模式,只需要在入口文件中,載入框架入口文件語句之前,增加一行常量定義語句;
define(“APP_DEBUG”,true);
開啟調(diào)試模式后,系統(tǒng)會自動開啟以下內(nèi)容:
操作日志、SQL日志等日志,任何的錯誤都會詳細記錄,便于調(diào)試;
關閉模板文件緩存,模板修改即時生效;
關閉字段緩存,數(shù)據(jù)庫的字段修改不受緩存影響;
嚴格檢查文件大小寫等等
調(diào)試模式是一種在項目上線之前,開發(fā)、調(diào)試、演示等等場景下的一個便捷工具。
6、ThinkPHP中支持哪些配置模式?優(yōu)先級是怎樣的?
ThinkPHP在項目配置方面創(chuàng)建了自己都有的分層配置模式,優(yōu)先順序從右到左依次是:
? ? 慣例配置->項目配置->調(diào)試配置->分組配置->拓展配置->動態(tài)配置
7、ThinkPHP中URL模式支持哪幾種?
ThinkPHP支持4中URL模式,通過URL_MODEL參數(shù)進行配置修改,默認為PATHINFO模式,配置值0,1,2,3依次是:普通模式、PATHINFO模式、REWRITE模式和兼容模式
8、ThinkPHP中的系統(tǒng)變量有哪些?如何獲取系統(tǒng)變量?
ThinkPHP中常用的系統(tǒng)變量包括:server、session、cookie、get、post、request
系統(tǒng)變量的輸出必須使用$Think.作為前綴,比如:
$Think.server.php_self = $_SESSION[‘php_self’]
9、ThinkPHP中M方法和D方法的區(qū)別(高頻問題)
ThinkPHP中常用M和D兩種方法來實例化數(shù)據(jù)模型類,區(qū)別是M方法直接實例化數(shù)據(jù)模型基類,D方法會檢查一下是否有繼承的模型類,如果沒有的話,則功能和M方法一樣,如果存在繼承類,則實例化繼承類。
相關學習推薦:thinkphp