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

摘要:
Php//格式输出函数p{dump;}在controller./Application/Home/controller/IndexController.class中创建新方法。php:publicfunctiontest_function(){p;}打印结果:Array0.0852s[ShowPageTrace]ViewCode方法2.加载用户定义的公共函数文件。有时,当项目中有许多用户定义的函数时,可能很难在一个文件中维护所有函数。此时,您可以选择按函数或项目拆分公共函数文件,例如,在下面创建ifunction/应用程序/公共/公共Php,此时无法自动加载文件。有两种方法可以自动加载文件:① 在配置文件/Application/Common/Conf/config中添加配置。php:'LOAD_EXT_FILE'=˃'ifunction',ifunction。php文件可以自动加载。

方法一、加载默认的公共函数文件

在 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);
    }

打印结果:

ThinkPHP 3.2.3 自动加载公共函数文件的方法第1张ThinkPHP 3.2.3 自动加载公共函数文件的方法第2张
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:windowssystem32;C:windows;C:windowsSystem32Wbem;C:windowsSystem32WindowsPowerShellv1.0;D:Program FilesTortoiseSVNin;d:Program FilesSubversionin;
    [SystemRoot] => C:windows
    [COMSPEC] => C:windowssystem32cmd.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.phpHomeIndex	est_functionIndex	est_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);
    }

免责声明:文章转载自《ThinkPHP 3.2.3 自动加载公共函数文件的方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SQLi-Labs:Less7-Less10JavaScript 动态创建表格:新增、删除行和单元格下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

.net core开发 (一)

1..net core: 是微软开发的另外一个可以跨平台的.net 2..net framework,.net core, mono的关系三者都是.net在不同操作系统的实现 3. .net core版本.net core 1.1 -> .net core 2.0 preview -> .net core 2.0 4. linux安装.net...

如何解决webpack中css背景图片的绝对地址

 在项目开发中,一般写相对路径是没有问题的,但是在项目比较大的情况下,我的scss文件可能为了方便管理,会放在不同的文件夹下,有的可能又不需要放在文件夹下,比如我的scss文件结构如下:  module    common.scss    test.scss about    about.scss    login.scss index.scss 比如目录...

Thinkphp6笔记八:公共函数配置

方式一:文件位置:app_name/common.php <?php //这是系统自动生成的公共文件 functiontest(){ echo 'test1'; } 控制器/模型调用return test(); 方式二:文件位置:app_name/admin/common.php <?php //这是系统自动生成的公共文件 if(!...

selenium的常见异常

selenium的常见异常 Exceptions(异常)Python 自带的异常,所有异常的基类。 异常:  selenium.common.exceptions.ElementNotSelectableException(msg=None, screen=None, stacktrace=None) 依据: selenium.common.except...

js css等静态文件版本控制,一处配置多处更新.net版【原创】

日常web开发中,我们修改了js、css等静态资源文件后,如果文件名不变的话,客户端浏览并不会及时获取最新的资源文件,这就很尴尬了 怎么办呢? 1.小白:让客户清除缓存?,No ,不靠谱 2.初级:把文件名改了?,可以,但我们产品样式一天更新8百次,怎么办?不方便 <link href="/css/old.css"rel="stylesheet"ty...

weblogic 的应用链接不上数据库报异常 Caused By: weblogic.common.ResourceException: Io exception: Connection reset 错误信息表示访问数据库异常,创建链接池失败

保存信息如下: weblogic.application.ModuleException:at weblogic.jdbc.module.JDBCModule.prepare(JDBCModule.java:290)at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(Mod...