ThinkPHP的C函數詳細講解過程分析

2021-01-10 億仁網

一個好的框架應該是靈活的、低耦合的,所以配置系統是重要的也是必需的。ThinkPHP提供的配置核心都是基於PHP數組的。在ThinkPHP中,配置文件都是自動加載的(也就是不用顯示require),加載順序為:默認配置->公共配置->模式配置->調試配置->場景配置->模塊配置->擴展配置->動態配置。加載順序優先級從左往右依次遞增,也就是說「動態配置」是最高優先級,如果左邊的配置和右邊有重複,系統會使用右邊的值。

默認配置是ThinkPHP「大道至簡,開發由我」宗旨的核心體現,旨在減少開發的編碼工作而設計的。默認情況下,該配置文件路徑為ThinkPHP/Conf/convention.php,對於一個新的Web項目,,除了資料庫配置可能要自定義之後,幾乎不需要額外的配置定義。所謂公共配置,指的是一個應用下的所有模塊都會加載的配置文件。默認情況下,公共配置的文件路徑為Application/Common/Conf/config.php。針對配置的操作無非讀寫而已,ThinkPHP提供了很方便的配置操作函數C(大寫字母C)。ThinkPHP按照默認的順序加載完配置之後,配置全局有效,在框架作用範圍內(一般指應用目錄下),所有配置都可以直接使用C函數讀取(包括ThinkPHP默認配置)。作為配置操作的一個重要函數,不得不單獨提下C函數。打開文件ThinkPHP/Common/functions.php,可以看到C函數定義如下:

可以看到ThinkPHP的注釋是很詳盡的,就算是沒有使用過C函數的程式設計師,看完注釋之後對C函數的使用方法應該是沒有問題的。C語言函數算法說明如下:

(1)定義static $_config變量,static方式定義的變量本次請求內全局有效。

(2)如果傳入的$name為空,返回所有配置;如果不為空,進入第3步。

(3)判斷$name是否為字符串,如果是,進入第4步;否則進入第12步。

(4)判斷$name中是否有「.」,如果沒有,進入第5步;否則進入第8步。

(5)將$name轉換為大寫,如果$value為null,進入第6步;否則進入第7步。

(6)判斷是否存在名為$name的配置,如果存在,則返回該配置的值;否則返回默認值。

(7)將名稱為$name的配置值設為$value,並返回null。

(8)將$name分割為數組,加入傳入的$name為「user.name」,分割完之後$name為['user','name']。

(9)將$name數組的第1個元素「user」轉換為大寫,如果傳入的$value為null,則進入第10步,負責進入第11步。

(10)判斷是否存在$_config[$name[0]][$name[1]](本例中為$_config['user']['name'])的配置,如果存在,返回$_config[$name[0]][$name[1]]的值,否則返回null。

(11)將名稱為$_config[$name[0]][$name[1]](本例中為$_config['user']['name'])的配置值設為$value,並返回null。

(12)如果$name是數組,則將該數組的全部鍵名轉換為大寫後合併到全局配置中去。

(13)最後返回null是為了防止非法調用函數。

通過源碼分析發現,ThinkPHP的配置名稱只有一級是不區分大小寫的,也就是說C(『DATA_CACHE_TYPE』)和C(『data_cache_type』)的返回值是相等的,但是二級配置是區分大小寫的,也就是說C(『user.name』)和C(『user.NAME』)是不相等的。另外,關於無限級配置,因為源碼中可以看到ThinkPHP在對配置的處理只處理到二級,不支持二級以上配置。

相關焦點

  • 高中數學:導數與函數,知識點最全講解歸納,聚焦分析要點,考點
    1.資料名稱:高中數學:導數與函數,綜合知識講解2.資料介紹:導數與函數部分是高中數學的重點和難點,同時兩章節的知識還存在一個相輔相成的關係,所以今天小編為大家分享的這套資料將這兩章節知識點歸納到了一起。
  • 九年級數學一元二次函數基礎知識點講解,輕鬆入門一元二次函數
    九年級數學一元二次函數基礎知識點講解,輕鬆入門一元二次函數本文我們主要通過圖像和函數的性質進行一元二次函數基礎考點的講解,希望同學們在應用一元二次函數相關的知識時,能夠記住這些基礎相關的考點,順利突破難點!
  • 解決thinkphp的表欄位是中文報錯的問題
    thinkphp提供了模型和資料庫操作資料庫表格數據,但是項目中遇到一個問題是一旦數據表欄位是中文時,就會報錯,"不支持的數據表達式"。我通過查找資料基本上有修改thinkphp資料庫驅動的,但是沒成功。我這裡介紹的辦法是使用原生查詢語句進行查詢即可。有朋友問了,怎麼原生查詢呢?
  • 初中數學 二次函數y=ax+bx+c(a≠0)中係數a,b,c的幾何意義 - 周...
    在二次函數的學習中,經常會碰到有一類題型,需要判斷函數係數的關係式是否成立,好多同學總是一頭霧水,不知從何下手。老師今天分享這方面的知識,掌握了一定會解決你的困惑。那麼在解這種題目時,需要弄清楚係數a,b,c與二次函數的關係,以及拋物線在直角坐標系中的幾何意義。二次函數y=ax'+bx+c(a≠0)中係數的幾何意義:(1)a的符號確定拋物線的開口方向。
  • 高考數學填空壓軸題講解分析:函數的零點與方程根的關係 - 吳國平...
    已知函數f(x)=|x|/ex,g(x)=﹣4x+m2x+1+m2+2m﹣1,若M={x|f(g(x))>e}=R,則實數m的取值範圍是   .考點分析:函數的零點與方程根的關係.2、函數的零點與相應方程的根、函數的圖象與x軸交點間的關係:方程f(x)=0有實數根函數y=f(x)的圖象與x軸有交點函數y=f(x)有零點。
  • 高考加油,每日一題,函數有關的綜合題型講解分析 - 吳國平數學教育
    典型例題分析1:將函數f(x)=ax(a>0且a≠1)的圖象上各點的橫坐標伸長為原來的2倍,縱坐標不變,得到的圖象與y=2-x/2的圖象重合,則實數a的值為(  )A.1/2B.2C.3D.√2解:函數f(x)
  • [大講堂]牢記二次函數圖象與a、b、c的關係,瞬間解答難題
    今天,我想與初三的同學聊聊二次函數圖象與a、b、c的關係,首先老師給同學製作了一張關係圖>從這張圖上我們可以一目了然地判斷a、b、c的取值範圍與二次函數圖象之間的關係,希望同學們牢記。下面我再把這種關係延伸一下,先請看圖對於二次函數y=ax2+bx+c (a≠0),當x=1時,就會出現三種現象
  • 邏輯函數中利用IF函數判斷是與不是,利用NOT函數對參數值求反
    今日和大家繼續分享邏輯函數中的IF和NOT,這兩個函數的應用非常廣泛,很多接觸EXCEL函數的朋友最初都是從IF函數開始的,這個函數在EXCEL中的地位是永遠撼不動的。下面給大家詳細的講解。這是邏輯函數的第三講一.IF 判斷是與不是。
  • 你想要的都在這,一文就會,詳細講解如何使用Python繪製柱狀圖
    前幾次,已經和大家探討了關於在Python中調用matplotlib庫繪製圖表的東東,今天呢,咱們對於常用圖表的繪製進行一下詳細的講解哦!好啦,那就開始吧!首先,詳細探討如何用Python繪製柱狀圖柱狀圖是大家最為熟悉的一類圖表了,在咱們的平常工作中也是使用頻率非常高的一種統計圖形哦,下面咱們還是結合「慄子」的方式對其進行詳細的聊聊哦!
  • 中考必考知識點:二次函數8個例題簡要分析
    在《義務教育數學課程標準》中,二次函數是九年級學生學習的重點和難點,也是中招考試的必考內容,同時二次函數也是高中生學習的重要內容,因此,初中階段讓學生學好二次函數是十分必要的。今天我們就以下8個例題簡單分析一下二次函數幾個重要考點。
  • Filter函數和ReDim語句講解,以及VBA中利用動態數組排重的方法一
    大家好,我們今日繼續講解VBA代碼解決方案的第61講內容:在VBA中如何使用動態數組,以及利用動態數組去除重複值的方法。一 :Filter函數:這個函數返回一個下標從零開始的數組,該數組包含基於指定篩選條件的一個字符串數組的子集,語法如下:Filter(sourcesrray, match[, include[, compare]])參數a) sourcesrray是必需的,要執行搜索的一維字符串數組。b) match是必需的,要搜索的字符串。
  • 每日一課丨長春·關於中考數學壓軸知識點——反比例函數題型講解
    前言:定時更新最乾貨的初中數學壓軸題型講解。如需要本堂內容的word電子版本,請私信與我!,k的取值範圍是(  )A.0<k≤2 B.2/3≤k≤3 C.2/3≤k≤2 D.8/3≤k≤4【分析】設C(c,0)(0≤c≤3),過P作PD⊥x軸於點D,由△PCD∽△ACB,用c表示P點坐標,再求得k關於c的解析式,最後由不等式的性質求得k的取值範圍.
  • 詳細講解方程零點在綜合題中的運用
    題型分析如下圖中的題型,詐看上去和方程零點沒有關係,但是很多的時候當一個方程求完導數後,得到新的方程時卻無法判斷它圖像的變化,而此時就可以根據求導後得到的方程的零點來判斷原方程的單調性。對於任意的a∈R,x>0,都有f(x)>g(x)成立,所以可以將兩個函數做減e^(2x)-2ae^x+2a^2>2alnx-(lnx)^2+k^2/8(x>0),看到了a^2和a就可以將這個不等式看成一元二次方程的不等式,整理就可以得到關於a的二元一次不等式,即2a^2-2a(e^x+lnx)+e^(2x)+(lnx)^2-k^2/8>0恆成立;
  • 三角函數不僅是特殊的函數,還是每年高考數學的香餑餑
    三角函數有關的高考試題分析,講解1:將函數f(x)=sin(2x+φ)(|φ|<π/2)的圖像向左平移π/6個單位後的圖形關於原點對稱,則函數f(x)在[0,π/2]上的最小值為   .考點分析:函數y=Asin(ωx+φ)的圖像變換.題幹分析:根據函數y=Asin(ωx+φ)的圖像變換規律,正弦函數的圖像的對稱性,求得 φ 的值,可得函數的解析式,再利用正弦函數的定義域和值域,求得函數f(x)在[0,π/2]上的最小值.
  • 高考數學對數函數五大基礎考點講解及相關的解題技巧
    高考數學對數函數五大基礎考點講解,八大重要公式及其相關的解題技巧本課程為高考複習資料內容,適用於高一及高一以上的學生。請根據自身情況選擇性閱讀。符號說明:log34:以3為底4的對數,為區分,將真數部分設為黑體。
  • C/C+編程筆記:零基礎講解C語言——基本字符集
    C語言過程中最枯燥的部分,分幾次講解,我會儘量用最輕鬆的方式講解 在C語言中,符號常量,變量,數組,函數等都需要一定的名稱,我們把這種名稱成為標識符。也就是說,標識符我們為C語言中出現的所有元素取得名字。
  • 數學分析第四章《函數連續性》備考指南
    函數極限理論的確立,也意味著整個微積分乃至數學分析的理論基礎已經牢固。大表哥有必要幫同學們回憶下第三章,當函數的自變量趨於某固定點時的極限,如下從定義不難看出,連續意味著函數的極限存在,不僅存在,而且恰好等於在這點處的函數值。
  • 數學分析第一章《實數集與函數》備考指南
    很多分析的教材,第一章都是《實數集與函數》,從教材本身的編排,它屬於過渡性的章節,編者從實際出發,考慮到大一的小朋友經過了漫長的高考假期,並且還有入學軍訓,必然導致間歇性的知識遺忘,所以安排了同學們都比較熟悉的實數和函數。第一章只有一個知識點,是同學們中學沒有接觸過的,那就是確界的定義!
  • 高考數學函數單調性講解,指數函數,冪函數,對數函數 - 教育有溫度
    小編希望把好的做題方法能講解給大家,讓大家在答題時減少更多的時間以及提高準確率,今天小編主要根據針對指數函數,冪函數以及對數函數性質研究單調性,我首先給大家一些例題,來著重複習指數函數。例一: 假如a>1,我們給x和x1假設限制一個範圍,即0<x<x1<1,我們根據指數函數,冪函數以及對數函數的性質來判定一下a∧x(a的x次方)和a∧x1(a的x1次方)兩個值的大小。
  • 2019高考數學之一元一次函數與直線方程(上)
    >c 圖像性質1 a>0,b>0一元一次函數2 直線方程ax+by+c=0。(a,b不能同時為0)a 基本概念一次項:ax,by,常數項:c,一次項係數:a,b,當a,b同時為零時b 圖像如圖給出了三個圖像,其與一元一次函數圖像聯繫比較緊密,我們這裡就不再贅述了哦!