1.如何理解TP中的單一入口文件?
目前創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、馬鞍山網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。答:ThinkPHP采用單一入口模式進(jìn)行項目部署和訪問,無論完成什么功能,一個項目都有一個統(tǒng)一(但不一定是唯一)的入口。應(yīng)該說,所有項目都是從入口文件開始的,并且所有的項目的入口文件是類似的,入口文件中主要包括:
定義框架路徑、項目路徑和項目名稱(可選)
定義調(diào)試模式和運行模式的相關(guān)常量(可選)
載入框架入口文件(必須)
2.ThinkPHP中的MVC分層是什么?(理解)
MVC 是一種將應(yīng)用程序的邏輯層和表現(xiàn)層進(jìn)行分離的方法。ThinkPHP 也是基于MVC設(shè)計模式的。MVC只是一個抽象的概念,并沒有特別明確的規(guī)定,ThinkPHP中的MVC分層大致體現(xiàn)在:
模型(M):模型的定義由Model類來完成。
相關(guān)專題推薦:2020年thinkphp面試題及答案(大全)
控制器(C):應(yīng)用控制器(核心控制器App類)和Action控制器都承擔(dān)了控制器的角色,Action控制器完成業(yè)務(wù)過程控制,而應(yīng)用控制器負(fù)責(zé)調(diào)度控制。
視圖(V):由View類和模板文件組成,模板做到了100%分離,可以獨立預(yù)覽和制作。
但實際上,ThinkPHP并不依賴M或者V ,也就是說沒有模型或者視圖也一樣可以工作。甚至也不依賴C,這是因為ThinkPHP在Action之上還有一個總控制器,即App控制器,負(fù)責(zé)應(yīng)用的總調(diào)度。在沒有C的情況下,必然存在視圖V,否則就不再是一個完整的應(yīng)用。
總而言之,ThinkPHP的MVC模式只是提供了一種敏捷開發(fā)的手段,而不是拘泥于MVC本身。
3.如何理解 ThinkPHP 3.0 架構(gòu)(核心 + 行為 + 驅(qū)動)中的行為?
答:核心 + 行為 + 驅(qū)動
TP官方簡稱為:CBD
核心(Core):就是框架的核心代碼,不可缺少的東西,TP本身是基于MVC思想開發(fā)的框架。
行為(Behavior) :行為在新版ThinkPHP的架構(gòu)里面起著舉足輕重的作用,在系統(tǒng)核心之上,設(shè)置了很多標(biāo)簽擴(kuò)展位,而每個標(biāo)簽位置可以依次執(zhí)行各自的獨立行為。行為擴(kuò)展就因此而誕生了,而且很多系統(tǒng)功能也是通過內(nèi)置的行為擴(kuò)展完成的,所有行為擴(kuò)展都是可替換和增加的,由此形成了底層框架可組裝的基礎(chǔ)。
驅(qū)動( Driver ):數(shù)據(jù)庫驅(qū)動、緩存驅(qū)動、標(biāo)簽庫驅(qū)動和模板引擎驅(qū)動,以及外置的類擴(kuò)展。
框架,即framework。其實就是某種應(yīng)用的半成品,就是一組組件,供你選用完成你自己的系統(tǒng)。簡單說就是使用別人搭好的舞臺,你來做表演。而且,框架一般是成熟的,不斷升級的軟件。
4. ThinkPHP如何防止SQL注入?(理解)
(1)查詢條件盡量使用數(shù)組方式,這是更為安全的方式;
(2)如果不得已必須使用字符串查詢條件,使用預(yù)處理機(jī)制;
(3)開啟數(shù)據(jù)字段類型驗證,可以對數(shù)值數(shù)據(jù)類型做強(qiáng)制轉(zhuǎn)換;(3.1版本開始已經(jīng)強(qiáng)制進(jìn)行字段類型驗證了)
(4)使用自動驗證和自動完成機(jī)制進(jìn)行針對應(yīng)用的自定義過濾;
(5)使用字段類型檢查、自動驗證和自動完成機(jī)制等避免惡意數(shù)據(jù)的輸入。
5. 如何開啟調(diào)試模式?調(diào)試模式有什么好處?
開啟調(diào)試模式很簡單,只需要在入口文件中增加一行常量定義代碼:
在完成開發(fā)階段部署到生產(chǎn)環(huán)境后,只需要刪除調(diào)試模式定義代碼即可切換到部署模式。開啟調(diào)試模式后,系統(tǒng)會首先加載系統(tǒng)默認(rèn)的調(diào)試配置文件,然后加載項目的調(diào)試配置文件,調(diào)試模式的優(yōu)勢在于:
開啟日志記錄,任何錯誤信息和調(diào)試信息都會詳細(xì)記錄,便于調(diào)試;
關(guān)閉模板緩存,模板修改可以即時生效;
記錄SQL日志,方便分析SQL;
關(guān)閉字段緩存,數(shù)據(jù)表字段修改不受緩存影響;
嚴(yán)格檢查文件大小寫(即使是Windows平臺),幫助你提前發(fā)現(xiàn)Linux部署問題;
可以方便用于開發(fā)過程的不同階段,包括開發(fā)、測試和演示等任何需要的情況,不同的應(yīng)用模式可以配置獨立的項目配置文件。
6. TP中支持哪些配置模式?優(yōu)先級?
ThinkPHP在項目配置上面創(chuàng)造了自己獨有的分層配置模式,其配置層次體現(xiàn)在:
慣例配置->項目配置->調(diào)試配置->分組配置->擴(kuò)展配置->動態(tài)配置
以上是配置文件的加載順序,因為后面的配置會覆蓋之前的同名配置(在沒有生效的前提下),所以優(yōu)先順序從右到左。
7. TP中的URL模式有哪幾種?默認(rèn)是哪種?
ThinkPHP支持四種URL模式,可以通過設(shè)置URL_MODEL參數(shù)來定義,包括普通模式、PATHINFO、REWRITE和兼容模式。
默認(rèn)模式為:PATHINFO模式,設(shè)置URL_MODEL 為1
8. TP中系統(tǒng)變量有哪些?如何獲取系統(tǒng)變量?
獲取系統(tǒng)變量的方法:
只需要在Action中調(diào)用下面方法:
$this->方法名("變量名",["過濾方法"],["默認(rèn)值"])
9、ThinkPHP框架中D函數(shù)與M函數(shù)的區(qū)別是什么?
答:M方法實例化模型無需用戶為每個數(shù)據(jù)表定義模型類,D方法可以自動檢測模型類,如果存在自定義的模型類,則實例化自定義模型類,如果不存在,則會自動調(diào)用M方法去實例化Model基類。同時對于已實例化過的模型,不會重復(fù)去實例化(單例模式)。
相關(guān)學(xué)習(xí)推薦:thinkphp
標(biāo)題名稱:Thinkphp面試問題及答案
網(wǎng)站地址:http://weahome.cn/article/cgdhph.html