ThinkPHP 3.2.3 自動加載公共函數文件的方法


方法一、加載默認的公共函數文件

在 ThinkPHP 3.2.3 中,默認的公共函數文件位於公共模塊 ./Application/Common 下,訪問所有的模塊之前都會首先加載公共模塊下面的配置文件(Conf/config.php)和公共函數文件(Common/function.php),即默認的公共函數文件為 ./Application/Common/Common/function.php。

例如,在 ./Application/Common/Common 下新建 function.php,自定義一個格式化的函數

<?php
//格式化輸出
function p($var) {
    dump($var, true, null, 0);
}

在控制器 ./Application/Home/Controller/IndexController.class.php 中新建方法:

    public function test_function() {
        p($_SERVER);
    }

打印結果:

Array
(
    [REDIRECT_SCRIPT_URL] => /Home/Index/test_function
    [REDIRECT_SCRIPT_URI] => http://127.0.0.100/Home/Index/test_function
    [REDIRECT_STATUS] => 200
    [SCRIPT_URL] => /Home/Index/test_function
    [SCRIPT_URI] => http://127.0.0.100/Home/Index/test_function
    [HTTP_HOST] => 127.0.0.100
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; rv:43.0) Gecko/20100101 Firefox/43.0
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    [HTTP_ACCEPT_LANGUAGE] => zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_COOKIE] => thinkphp_show_page_trace=0|1; PHPSESSID=qk6bahlmiqj8b52o309dl813b5; thinkphp_show_page_trace=0|1
    [HTTP_CONNECTION] => keep-alive
    [HTTP_CACHE_CONTROL] => max-age=0
    [PATH] => C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;D:\Program Files\TortoiseSVN\bin;d:\Program Files\Subversion\bin;
    [SystemRoot] => C:\windows
    [COMSPEC] => C:\windows\system32\cmd.exe
    [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
    [WINDIR] => C:\windows
    [SERVER_SIGNATURE] => 
    [SERVER_SOFTWARE] => Apache/2.2.21 (Win32) PHP/5.3.10
    [SERVER_NAME] => 127.0.0.100
    [SERVER_ADDR] => 127.0.0.100
    [SERVER_PORT] => 80
    [REMOTE_ADDR] => 127.0.0.1
    [DOCUMENT_ROOT] => D:/practise/php/TPTest
    [SERVER_ADMIN] => admin@localhost
    [SCRIPT_FILENAME] => D:/practise/php/TPTest/index.php
    [REMOTE_PORT] => 56500
    [REDIRECT_URL] => /Home/Index/test_function
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => 
    [REQUEST_URI] => /Home/Index/test_function
    [SCRIPT_NAME] => /index.php
    [PATH_INFO] => Index/test_function
    [PATH_TRANSLATED] => redirect:\index.php\Home\Index\test_function\Index\test_function
    [PHP_SELF] => /index.php/Home/Index/test_function
    [REQUEST_TIME] => 1451725716
)

0.0852s
[ShowPageTrace]
View Code

 

 

方法二、加載自定義的公共函數文件

有的時候當項目當中自定義函數的數量非常多,把所有的函數寫在一個文件中可能會難以維護,這個時候可以選擇把公共函數文件按照功能或者項目進行拆分,例如在 ./Application/Common/Common 下新建一個 ifunction.php,此時並不能自動加載該文件。有兩種方法可以自動加載該文件:

① 在配置文件 ./Application/Common/Conf/config.php 中加入配置:

'LOAD_EXT_FILE' => 'ifunction',

此時就可以自動加載 ifunction.php 文件了。如果有多個需要自動加載的文件,在配置項的值中以 , 進行分隔。

 

② 臨時加載

在需要使用函數文件的控制器中直接加載:

    public function test_function() {
        load('Common.ifunction');//實際加載的文件是 ./Application/Common/Common/ifunction.php
        p($_SERVER);
    }

 

如果該函數文件位於調用函數的控制器所在的模塊下時,例如函數文件為 ./Application/Home/Common/ifunction.php,那么 ./Application/Home/Controller/IndexController.class.php 的某個方法要調用函數文件:

    public function test_function() {
        load('@.ifunction'); //實際加載的文件是 ./Application/Home/Common/ifunction.php,@表示當前模塊
        p($_SERVER);
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM