首頁 > php框架 > ThinkPHP > 主體

Thinkphp面試問題及答案

coldplay.xixi
發布: 2020-08-10 16:52:53
轉載
8250 人瀏覽過

Thinkphp面試問題及答案

1.如何理解TP中的單一入口檔案?

  答:ThinkPHP採用單一入口模式進行專案部署和訪問,無論完成什麼功能,一個專案都有一個統一(但不一定是唯一)的入口。應該說,所有項目都是從入口文件開始的,並且所有的項目的入口文件是類似的,入口文件中主要包括:

##  定義框架路徑、專案路徑與專案名稱(可選)

  定義偵錯模式與運行模式的相關常數(可選)

  載入框架入口檔案(必須)

2.ThinkPHP中的MVC分層是什麼? (理解)

# ## 

MVC 是一種將應用程式的邏輯層和表現層分開的方法。 ThinkPHP 也是基於MVC設計模式的。 MVC只是一個抽象的概念,並沒有特別明確的規定,ThinkPHP中的MVC分層大致體現在:

# #  模型(M):模型的定義由Model類別來完成。

 相關專題推薦:2020年thinkphp面試題目及答案(大全)

控制器(C):應用程式控制器(核心控制器App類別)和Action控制器都承擔了控制器的角色,Action控制器完成業務流程控制,而應用程式控制器則負責調度控制。  

  視圖(V):由View類別和範本檔案組成,範本做到了100%分離,可以獨立預覽和製作。  

  但實際上,ThinkPHP並不依賴M或V ,也就是說沒有模型或視圖也一樣可以運作。甚至不依賴C,這是因為ThinkPHP在Action之上還有一個總控制器,就是App控制器,負責應用程式的總調度。在沒有C的情況下,必然存在視圖V,否則就不再是完整的應用。  

#########  總而言之,ThinkPHP的MVC模式只是提供了一種敏捷開發的手段,而不是拘泥於MVC本身。 ##########

3.如何理解 ThinkPHP 3.0 架構(核心 行為 驅動)中的行為?

  ##  

「答案:核心行為驅動

 

  TP官方簡稱:CBD 

  核心(Core):就是框架的核心程式碼,不可缺少的東西,TP本身是基於MVC思想開發的框架。  

  行為(Behavior) :行為在新版ThinkPHP的架構裡面起著舉足輕重的作用,在系統核心之上,設定了很多標籤擴展位,而每個標籤位置可以依序執行各自的獨立行為。行為擴展就因此而誕生了,而且許多系統功能也是透過內建的行為擴展完成的,所有行為擴展都是可替換和增加的,由此形成了底層框架可組裝的基礎。
 
  驅動程式( Driver ):資料庫驅動程式、快取驅動程式、標籤庫驅動程式和範本引擎驅動,以及外置的類別擴充。
   框架,即framework。其實就是某種應用的半成品,就是一組組件,供你選來完成自己的系統。簡單說就是使用別人搭好的舞台,你來做表演。而且,框架一般是成熟的,不斷升級的軟體。

4. ThinkPHP如何防止SQL注入? (理解)  

  

#(1)查詢條件盡量使用陣列方式,這是更安全的方式;

#  (2)如果不得已使用字串查詢條件,使用預處理機制; 

  (3)開啟資料欄位類型驗證,可以對數值資料型別做強制轉換;(3.1版本開始已經強制進行字段類型驗證了)

### #############  (4)使用自動驗證和自動完成機制進行針對應用的自訂過濾;### ######### ############  (5)使用欄位類型檢查、自動驗證和自動完成機制等避免惡意資料的輸入。 ############ ###### ###### ####

5. 如何開啟偵錯模式?調試模式有什麼好處?

 

#  開啟除錯模式很簡單,只需要在入口檔案中增加一行常數定義碼:

<?php
 
      //开启调试模式
 
      define(&#39;APP_DEBUG&#39;, true);
 
      //加载框架入口文件
 
      require &#39;./ThinkPHP/ThinkPHP.php&#39;;
登入後複製

  在完成開發階段部署到生產環境後,只需要刪除偵錯模式定義程式碼即可切換到部署模式。開啟偵錯模式後,系統會先載入系統預設的偵錯設定文件,然後載入專案的偵錯設定文件,偵錯模式的優點在於:

## 

   開啟日誌記錄,任何錯誤訊息和偵錯資訊都會詳細記錄,以便於調試;

 

  關閉範本緩存,範本修改可以即時生效;

 

  記錄SQL日誌,方便分析SQL;

 

  關閉欄位快取,資料表欄位修改不受快取影響;

 

  嚴格檢查檔案大小寫(即使是Windows平台),幫助你事先發現Linux部署問題;

 

  可以方便用於開發過程的不同階段,包括開發、測試和演示等任何需要的情況,不同的應用模式可以配置獨立的專案設定檔。

 

6. TP中支援哪些設定模式?優先級?

 

  ThinkPHP在專案配置上創造了獨有的分層設定模式,其配置層次體現在:

 

    慣例配置->專案配置->調試配置->分組配置->擴展配置-> ;動態設定

 

   以上是設定檔的載入順序,因為後面的設定會覆寫先前的同名設定(在沒有生效的前提下),所以優先順序從右到左。

 

7. TP中的URL模式有哪幾種?預設是哪一種

 

  ThinkPHP支援四種URL模式,可以透過設定URL_MODEL參數來定義,包括普通模式、PATHINFO、REWRITE和相容模式。

 

    預設模式為:PATHINFO模式,設定URL_MODEL 為1#

 

8. TP中系統變數有哪些?如何取得系統變數?

 

   取得系統變數的方法:

 

#   只需要在Action中呼叫下面方法:

 

  $this->#cue ("變數名稱",["過濾方法"],["預設值"])

 

#9ThinkPHP框架中D函數與M函數的差異是什麼?

   答:M方法實例化模型無需使用者為每個資料表定義模型類,D方法可以自動偵測模型類,如果存在自訂的模型類,則實例化自訂模型類,如果不存在,則會自動呼叫M方法去實例化Model基底類別。同時對於已實例化過的模型,不會重複去實例化(單例模式)。

#相關學習推薦:thinkphp

##################################################################################################################################################################################” ##########

以上是Thinkphp面試問題及答案的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:cnblogs.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板