Thinkphp中系統提供了三個文件加載方式:
函數庫形式加載:
函數庫再thinkphp中包括三類:系統函數庫文件(functions.php)、應用級別函數庫文件、分組級別函數文件。
這三類函數庫文件只有系統函數庫文件(functions.php)是系統默認存在的,而另外兩類函數庫形式需要自行創建。
立即學習“PHP免費學習筆記(深入)”;
同時要注意,只有系統函數庫文件名為functions.php,而另外兩類函數庫形式文件名叫做function.php。
案例:使用函數庫形式定義需要使用的函數。函數名:testfunction
<?php function testfunction(){ echo 'testfunction'; } public function test(){ testfunction(); }
展示結果:
定義好的函數庫文件中的函數,在使用的時候遵循php內置函數語法的要求,直接寫上函數名(參數)就可以了。
說明:
第一:不需要引入function.php,系統在執行的時候自動幫我們引入了文件function.php文件;
第二:如果函數定義在應用級別的函數庫文件中,則能在全部的分組(整個應用)使用;如果函數定義在某個分組的函數庫文件中,則只能在當前的分組中使用,否則會報函數未定義。
通過配置項動態加載:
在系統的執行流程中有 一個文件會被執行到App.class.php
????static?public?function?init()?{ ????????//?加載動態應用公共文件和配置 ????????load_ext_file(COMMON_PATH);
在該方法中執行了一個load_ext_file函數。
該方法并不是php內置的方法,而是在系統函數庫文件中定義的:
function?load_ext_file($path)?{ ????//?加載自定義外部文件 ????if($files?=?C('LOAD_EXT_FILE'))?{ ????????$files??????=??explode(',',$files); ????????foreach?($files?as?$file){ ????????????$file???=?$path.'Common/'.$file.'.php'; ????????????if(is_file($file))?include?$file; ????????} ????}
擴展:C方法
C方法也是快速方法之一,其作用是操作ThinkPHP中的配置項:
C(name,value); 設置配置項name的值,值是value
C(name); 讀取配置項name的值
C(); 讀取全部的配置項
配置項:
在應用級別的配置文件中定義配置項LOAD_EXT_FILE,引入文件info.php。
????'load_ext_file'?????????=>??'info',????? ????//包含文件名的字符串,多個文件名通過使用英文半角逗號分割
在應用函數庫文件目錄中定義一個info.php
<?php function getInfo(){ phpinfo(); }
測試:
????public?function?test(){ ????????getInfo(); ????}
展示結果:
上述需要注意的是,同樣文件在系統封裝的方法中已經進行了引入,所以在使用具體的函數的時候不需要再對文件進行單獨的引入,只需要像使用函數庫文件的形式直接編寫需要使用的函數名即傳遞相應的參數即可。
通過load方法加載
語法:
load(‘@/不帶后綴的php文件名’);
需要注意的是,文件必須存在于分組級別的函數庫目錄中,并且只能用于定義的分組中。
案例:通過自己在分組目錄中創建文件hello.php,然后在其中定義一個函數,然后再去使用load方法加載并且使用其中的函數。
<?php function sayhello($who){ echo 'hello ' . $who; }
在控制器中使用load方法加載hello.php文件:
????public?function?test(){ ????????//load ????????load('@/hello'); ????????//調用函數 ????????sayhello(world); ????}
展示效果:
說明:上述三個文件的加載方式在實際開發的時候都可以使用,但是一般以第一種為主(通過函數庫形式自動加載)。
推薦教程:thinkphp教程