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] => [email protected]
    [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]

方法二、加载自定义的公共函数文件

有的时候当项目当中自定义函数的数量非常多,把所有的函数写在一个文件中可能会难以维护,这个时候可以选择把公共函数文件按照功能或者项目进行拆分,例如在 ./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);
    }
时间: 2024-08-05 07:06:40

ThinkPHP 3.2.3 自动加载公共函数文件的方法的相关文章

thinkphp学习笔记9—自动加载

1.命名空间自动加载 在3.2版本中不需要手动加载类库文件,可以很方便的完成自动加载. 系统可以根据类的命名空间自动定位到类库文件,例如定义了一个类Org\Util\Auth类: namespace Org\Util; class Auth { } 保存到ThinkPHP/Library/Org/Util/Auth.class.php 这样我们就可以直接实例化了, new \Org\Util\Auth(); 实例化之后系统会自动加载 ThinkPHP/Library/Org/Util/Auth.

使用jQuery动态加载js脚本文件的方法

动态加载Javascript是一项非常强大且有用的技术.这方面的主题在网上已经讨论了不少,我也经常会在一些个人项目上使用RequireJS和Dojo加载js 它们很强大,但有时候也会得不偿失.如果你使用的是jQuery,它里面有一个内置的方法可以用来加载单个js文件.当你需要延迟加载一些js插件或其它类型的文件时,可以使用这个方法.下面就介绍一下如何使用它! 一.jQuery getScript()方法加载JavaScript jQuery内置了一个方法可以加载单一的js文件:当加载完成后你可以

有时候横竖屏切换的时候有没自动加载layout布局文件知道为什么吗?

我大概知道原因,但还是不知道确切原因.在我的Mainfester.xml中的有些activity是android:configChanges="keyboardHidden|orientation"有些是android:configChanges="keyboardHidden|orientation|screenSize",后者会出现切换屏幕不会重新加载对于的资源文件.说明没有重新启动activity,(据说从Android 3.2 (API level 13)开

java web项目启动时自动加载自定义properties文件

首先创建一个类 public class ContextInitListener implements ServletContextListener 使得该类成为一个监听器.用于监听整个容器生命周期的,主要是初始化和销毁的. 类创建后要在web.xml配置文件中增加一个简单的监听器配置,即刚才我们定义的类. Xml代码 <listener> <!-- lang: xml --> <description>ServletContextListener</descri

PHP .htaccess中添加自动加载的PHP文件

[UPDATE:solution] thx everyone, especially RiaD for its idea, this is what I've done: Edited my .htaccess file at the root of my website and added the following line, #Loads an init php located at <fullpath>/<path-to-folder-with-php-files-to-incl

PHP中的use、命名空间、引入类文件、自动加载类的理解

use只是使用了命名空间,但是要想调用类,必须要加载类文件,或者自动加载. 即便是引入了其中一个类,如果没有自动加载机制,还是会报错 use的几种用法 namespace Blog\Article; class Comment { } //创建一个BBS空间(我有打算开个论坛) namespace BBS; //导入一个命名空间 use Blog\Article; //导入命名空间后可使用限定名称调用元素 $article_comment = new Article\Comment(); //为

PHP面向对象之类的自动加载

类的自动加载 含义: 当某行代码需要一个类的时候,php的内部机制可以做到"自动加载该类文件",以满足该行需要一个类的这种需求. 什么时候需要一个类? 1,new一个对象的时候: 2,使用一个类的静态方法的时候: 3,定义一个类(B)并以另一个类(A)作为父类的时候: 条件和要求 1, 当需要一个类的时候,就会自动调用某个函数(默认是__autoload),并传入所需要的类的名字 2, 一个类应该保存到一个独立的"类文件中":即其中只有该类的定义,没有别的代码: 3

__autoload() 类文件自动加载函数

这个魔术方法是用来自动加载程序所用到类文件的PHP源文件,这样就避免了我们一个一个自动去require或者include了,这个函数会在试图使用尚未被定义的类时自动调用.通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类,但是我最近看过一篇文章,上面说__autoload()的效率不是很高.以下是示例代码: 1 <?php 2 功能:在当前页使用类时自动加载该类的文件 3 参数$className 为类的名称 可自定义 4 5 */ 6 7 function __auto

final,类的自动加载,命名空间

final是干什么的一般是为了防止父类的一个方法被重写如果父类中的方法被声明为 final,则子类无法覆盖该方法.如果一个类被声明为 final,则不能被继承. Note: 属性不能被定义为 final,只有类和方法才能被定义为 final. 类的自动加载类的自动加载是指,在外面的页面中,并不需要去"引入"类文件,但是程序会在需要的时候动态加载需要的类文件. spl_autoload_register() 函数可以注册任意数量的自动加载器,当使用尚未被定义的类(class)和接口(in