ThinkPHP 配置详解

摘要:
要解决这个问题,您需要了解ThinkPHP的配置加载机制。事实上,ThntPHP框架使用这种设计的原因是为了提高项目配置的灵活性。
 
3.0 ThinkPHP配置详解
 

3.1 入口文件的配置


 

一般不建议在入口文件做过多的配置,但可以重新定义一些系统常量,以下简单介绍几个常用的系统常量。

1.APP_PATH

默认情况下,框架的项目应用目录为 Application。如果需要改变应用目录就需要在入口文件中更改APP_PATH常量定义,如例3-1所示,

例3-1

 1 <?php
 2 // 应用入口文件
 3 
 4 // 检测PHP环境
 5 if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !');
 6 
 7 
 8 
 9 // 定义应用目录
10 define('APP_PATH','./Apps/');
11 
12 // 引入ThinkPHP入口文件
13 require './ThinkPHP/ThinkPHP.php';

 在例3-1中,第10行代码,将应用的目录更改为了Apps。不过需要注意的是,APP_PATH的定义支持相对路径和绝对路径,但必须以“/”结束。

2.APP_DEBUG

 APP_DEBUC是对调试的设置,当设置为true的时候表示开启调试模式,当设置为false的时候表示关闭调试模式,而在默认情况下APP DEBUG为开启状态。

 接下来我们通过举例演示一下调试模式在开发中的作用。如例3-2所示。

 例3-2

 1 <?php
 2
 3 // 应用入口文件
 4 
 5 // 检测PHP环境
 6 if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !');
 7 
 8 // 定义应用目录
 9 define('APP_PATH','./Application/');
10 
11 // 开启调试模式 建议开发阶段开启,部署阶段注释或者设为false
12 define('APP_DEBUG',True);
13 
14 // 引入ThinkPHP入口文件
15 require './ThinkPHP/ThinkPHP.php';

 此时打开浏览器,访问一个并不存在的方法,例如http:\www.tp.comindex.phpAdminLoginThisFunction.就会提示一个友好的错误信息,会把错误描述的更急具体。如图3-1所示。

 ThinkPHP 配置详解第1张

图3-1

从图3-1中,开发者能够清晰地看到错误原因是不存在 ThisFunction 这个方法。而如果将调试模式关闭,则仅会提示页面错误,如图3-2所示。

ThinkPHP 配置详解第2张

图3-2

 建议开发阶段开启,部署阶段注释或者设为false,因为APP_PATH会暴露一部分程序内部的信息。

 3.2  配置文件的配置


 在我的上篇博客 ThinkPHP 目录结构 中提到,不建议在ThinkPHP核心目录中修改配置 本小节我们来研究下怎么修改这些配置。

1. 确定配置文件所在位置

通过之前的学习可以知道,ThnkPHP框架有多个配置文件目录,那么配置信息究竟要放到在哪个目录下的配置文件中呢?要解决这个问题就需要了解ThinkPHP的配置加载机制。在ThinkPHP中,应用的配置文件息是自动加载的,

其中主要配置文件的加载顺序是: 惯例配置 一> 应用配置 一> 调试配置 一> 模块配置

由于后面的配置会覆盖之前的同名配置的,所以配置的优先级从右到左依次递减。

相有关配置的说明如下:

(1)惯例配置

框架内置有一个惯例配置文件( ThnkPHPConfconvention.php). 按照大多数的使用对常用参数进行了默认配置。所以,对于应用的配置文件。往往只需要配置与惯例配置不同的或者新增的配置参数,如果完全采用默认配置。甚至可以不需要定义任何配置文件。

(2)应用配置

应用配置文件也就是调用所有模块之前都会首先加载的公共配置文件(Appic toiCocacoeCooficonfig.php )。

(3)调试配置

如果开启调试模式,则会自动加载框架的调试配置文件( ThinkPHPNConfdebugpbp)和应用调试配置文件( ApplicationlCommonlConfdebugpbp).

(4)模块配置

每个模块会自动加载自己的配置文件( Aplication当前模块名Confconfig.php).
此时我们或许有一个疑问:既然惯例配置能够为 Application 下的所有模块提供公共配置,那么干脆就将所有配置信息都放到该文件中好了。

为什么还要有其他配置文件,这不是多此一举吗?

其实ThntPHP框架之所以采用这种设计,是为了投高项目配置灵话性。使不同的极块可以极据各自需求进行不同的配置。

2.配置文件名及配置格式

ThinkPHP框架中的配置文件需要有特定的文件名信息均可以在confg.php中进行配置。

ThinkPHP的配置文件使用标准的关联数组,通过键值对的方式改变配资信息,一个简单的config.php配置文件代码格式如例3-3所示

例3-3

 1 <?php
 2 return array(
 3            '配置项1'=>'配置值1',
 4 
 5            '配置项1'=>'配置值1',
 6 
 7            '配置项1'=>'配置值1',
 8 
 9            ......
10 );

3.常用配置

对ThinkPHP框架的配置文件有所了解之后,我们再来看几个常用的配置。

(1)默认访问设置

默认情况下,访问ThinkPHP下的入口文件index.php时,总是会访问到Home模块下的Index控制器的Index的操作。

它是在惯例配置文件中默认定义的,我们根据需要对其进行适当的修改。

修改代码如下所示

1 <?php
2 return array(
3            'DEFAULT_MODULE' =>'Admin', //设置默认模块
4       
5            'DEFAULT_CONTROLLER' =>'Login', //设置默认控制器名称
6 
7            'DEFAULT_ACTION' =>'CheckLogin', //设置默认操作名称
8 );

(2)设置数据库的连接信息

数据库的配置我们同样可以在配置惯例中找到,而直接在惯例配置中修改显然会降低框架的灵活性,所以我们可以将用到的配置项,从惯例文件中复制到我们的应用文件配置文件里(我这里是 ApplicatonCommonConfconfig.php)

这样一来,整应用文件夹的应用都可以使用这个数据库配置。其内容如例3-5所示

例3-5

 1 <?php
 2 return array(
 3     //'配置项'=>'配置值'
 4     //SHOW_PAGE_TRACE => true,
 5     'DB_TYPE'               =>  'mysql',     // 数据库类型
 6     'DB_HOST'               =>  '127.0.0.1', // 服务器地址
 7     'DB_NAME'               =>  'z_0705tp',          // 数据库名
 8     'DB_USER'               =>  'root',      // 用户名
 9     'DB_PWD'                =>  '',          // 密码
10     'DB_PORT'               =>  '3306',    // 端口
11     'DB_PREFIX'             =>  'tp_'  // 数据库表前缀
12 );

(3)URL访问模式配置

   所谓的URL访问模式,指的是以哪种形式的URL地址访问网站。

  ThinkPHP支持的URL模式有四种如下表所示

URL模式URL_MODEL设置示例
普通模式0http://localhost/index.php?m=home&c=Admin&a=login
PATHINFO(路径信息)模式1http://localhost/index.php/home/Admin/login
REWRITE (加工编写) 模式2http://localhost/home/Admin/login
兼容模式3http://localhost/index.php?s=/home/Admin/login

①普通模式:普通模式也就是传统的GET传参方式来指定当前访问的模块和操作,例如: http://localhost/index.php?m=home&c=Admin&a=login 其中m参数表示模块,c参数表示控制器、a参数表示操作。

②PATHINFO模式: PATHINFO模式是系统的默认URL模式,提供了最好的SEO支持。系统内部已经做了环境的兼容处理,所以能够支持大多数的主机环境对应上面的URL模式。

③REWRITE模式: REWRITE模式是在PATHINFO模式的基础上添加了重写规则的支持,可以去掉URL地址里面的人口文件index.php. 但是需要额外配置Web服务器的重写规则。

④兼容模式:兼容模式是用于不支持PATHINFO的特殊环境。


URL访问模式的意又在于:可以让网站中的所有链接有一个统-的格式 。

配置方法也是先参照惯例配置文件 根据需求将配置格式复制到应用文件夹下的配置文件

1 <?php
2 return array{
3     'URL_MODEL'   => 0  // 设置URL模式为普通模式
4 }

免责声明:文章转载自《ThinkPHP 配置详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇推荐清除SQL2008连接过的服务器名称历史记录,清空SQL Server连接的服务器名的方法Pod容器中安装软件包下篇

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

相关文章

iOS开发者账号详细介绍

前言:   做为一个iOS应用的开发者,在编码调试过程中,可以使用模拟器来完成整个过程。但是在最后提交上线App的时候,就必须要有一个苹果开发者账号。而我作为一个近乎完全自学的iOS开发者,在开发者证书上也是绕了很多圈,迷茫迷惑。在反复摸索验证的情况下。最后看透了这一切。最初一开始是在淘宝网上购买证书的,后来在公司有了自己的个人开发者账号,在个人开发者账号...

zz-rtl8188eu的linux-usb-wifi调试及驱动编译150210

//zz//#######################################################################zz-rtl8188eu的linux-usb-wifi调试及驱动编译150210zz-Write:@2015-2-4 22:11:14@2015-2-11 00:32:07@REF:嵌入式linux us...

第二章排错的工具:调试器Windbg(上)

感谢博主 http://book.51cto.com/art/200711/59731.htm 《Windows用户态程序高效排错》第二章主要介绍用户态调试相关的知识和工具。本文主要讲了排错的工具:调试器Windbg。   第二章 汇编、异常、内存、同步和调试器——重要的知识点和神兵利器 这一部分主要介绍用户态调试相关的知识和工具。包括:汇编、异常(ex...

GDB堆栈跟踪与汇编调试

GDB堆栈跟踪与汇编调试 堆栈跟踪 源代码: 对预先编写的 stack.c 文件进行编译,并且使用 CGDB 进行调试,对堆栈进行跟踪,了解该代码堆栈是如何变化的。 在 CGDB 中,先设置 main 断点,接着运行(run),使用 frameinfo frame 分别查看当前栈帧的简要信息,以及该栈帧的详细信息。其中: frame 打印出的信息:...

使用instruments工具调试性能

Instruments     Instruments是Xcode套件中没有被充分利用的一个工具。很多iOS开发者从没用过Instruments,或者只是用Leaks工具检测循环引用。实际上有很多Instruments工具,包括为动画性能调优的东西。     你可以通过在菜单中选择Profile选项来打开Instruments(在这之前,记住要把目标设置成...

arm gdb调试简述

arm gdb调试简述 编译、调试工具和平台 gcc-arm-none-eabigdb-arm-none-eabi,ubantu64位;网上有很多用nfs或者通过串口连接开发机和板子进行调试;这里用qemu的gnuarmeclipse模拟stm32f429的板子。 步骤 先在你的Makeflie的编译加上-g,这样生成的ELF文件里才有调试信息,否则只...