Thinkphp的系统配置和调试模式的开启

来源:互联网 发布:淘宝客托管 编辑:程序博客网 时间:2024/05/29 19:34

1.目录解析和系统配置


项目目录结构解析
以前文的项目构建为例,在网站根目录下的文件及目录为:

  • ThinkPHP:ThinkPHP 框架包文件夹
  • index.php:项目入口文件
  • myweb:项目文件夹
  • Public:公共目录,存放 css,javascript 等公共文件,手工创建  

第一次运行项目入口文件时,系统会自动生成项目目录结构,在 myapp 下:

  • Common:项目公共文件目录,一般放置项目的公共函数
  • Conf:项目配置目录,配置文件放该目录下
  • Lang:项目语言包目录(可选),作为多语言支持
  • Lib:项目类库目录,通常包括 Action、Behavior、Model、Widget 子目录
  • Tpl:项目模板目录,支持不同模板主题
  • Runtime:项目运行时目录,包括Cache(模板缓存)、Temp(数据缓存)、Data(数据目录)和Logs(日志文件)子目录
系统配置
系统配置文件在conf下的config.php,在这个文件中可以通过设置数组的形式设置系统的功能
下面列出一些常用的参数,具体请参阅官方文档doc:
return array(//'配置项'=>'配置值''APP_STATUS'            => 'debug', //调试模式开启'SHOW_PAGE_TRACE' =>true,  //调试模式时要设置'DB_TYPE'               => 'mysql',     // 数据库类型'DB_NAME'               => 'test',          // 数据库名'DB_USER'               => 'root',      // 用户名'DB_PWD'                => '123',          // 密码'DB_PORT'               => '',          // 端口'DB_PREFIX'             => '',    // 数据库表前缀'DB_CHARSET'            => 'utf8',      // 数据库编码默认采用utf8'DB_MASTER_NUM'         => 1,           // 读写分离后,主服务器数量);

'URL_CASE_INSENSITIVE'  => false,       // 默认false 表示URL区分大小写 true则表示不区分大小写'URL_MODEL'             => 1,           // URL访问模式,可选参数0、1、2、3,代表四种模式'URL_HTML_SUFFIX'       => '',          // URL伪静态后缀设置


2.thinkphp的模块操作

进入 Myweb\\Lib\\Action 目录,里面有个 IndexAction.class.php 文件。该文件为刚才我们运行入口文件 index.php 时系统自动生成的。打开该文件,其内容大致如下(方法内具体代码省略):

<?php// 本类由系统自动生成,仅供测试用途class IndexAction extends Action{    public function index(){        具体代码略……    }}?>

该文件已经演示了一个基于 ThinkPHP 的实际应用。

ThinkPHP 控制器

像上面这个 IndexAction.class.php 这样的特殊文件,称为控制器。该类文件通常位于 LibAction 下面,命名方式必须以“模块名+Action.class.php”样式来命名,如 IndexAction.class.php ,详细可参考《ThinkPHP 命名规范》一节。

ThinkPHP 模块

一个控制器对应一个模块。如 IndexAction.class.php 就对应 Index 模块,相应的类名为 IndexAction ,如上面的例子:

class IndexAction extends Action

ThinkPHP 操作

一个模块(类)里有多个方法,称之为“操作”。如上面例子的 index 方法:

public function index()

我们更改上面的 IndexAction.class.php 为:

<?phpclass IndexAction extends Action{    public function index(){        header("Content-Type:text/html; charset=utf-8");        echo "第一个例子测试!";    }}?>

再次访问网站首页(入口文件):

http://localhost/index.php

浏览器显示内容为在 index 操作中输出的:

第一个例子测试!

而不是原来的默认欢迎界面。

增加操作

要增加一个操作,只需在模块里增加一个定义为 public 方法即可。在 IndexAction.class.php 里面新增加一个 test 操作:

public function test(){    header("Content-Type:text/html; charset=utf-8");    echo "这是 test 操作";}

要访问该操作,浏览器地址为:

http://localhost/index.php/Index/test

浏览器输出如下:

这是 test 操作

可见要访问其他方法,需要在入口文件 URL 地址后面加上“模块/操作”才可以。关于通过入口文件 URL 地址访问模块方法的具体信息,请参看《ThinkPHP URL 访问模式》一节。

同模块调用其他操作

在同一个模块中,一个操作常常要调用其他操作(一般都是私有方法,通常都是独立的能被重复使用的功能模块),由于是在一个模块里(一个类里),因此使用 $this 可以很方便的调用其他操作:

<?phpclass IndexAction extends Action{    public function index(){        header("Content-Type:text/html; charset=utf-8");        echo "第一个例子测试!";$this->test();    }}?>

上面是将前面的 index 操作加上调用 test 操作的例子,运行 index 操作输出如下:

第一个例子测试!这是 test 操作

可见不仅 index 里面的 echo 语句执行了,test 操作里面的 echo 也执行了。这部分是属于 PHP 类与对象的知识,更多请参见PHP基础教程之《PHP 类与对象》一节的内容。

小结

  1. 控制器类文件名为 IndexAction.class.php 这种固定格式,对应 Index 模块,类名为 IndexAction
  2. 我们自定义的模块里面的类由 ThinkPHP的 基类 Action 继承而来,其遵循 PHP 的类继承属性
  3. 一个 Web 页面对应一个方法(反之则不一定),且该方法必须定义为 public 类型
  4. 一个控制器文件里面只能有一个模块可用,但模块(类)可以有多个方法,也可以没有方法

3如何开启DEBUG模式


刚刚入门的新手可能比较奇怪,明知道出错了,可是页面就是一片空白,什么都没显示,那么怎么开启debug模式呢?

首先在入口文件index.php中加入这句

//开启调试模式define('APP_DEBUG',true);
然后Conf下的config.php也要修改一下

增加2行

'APP_STATUS'            => 'debug', //调试模式开启'SHOW_PAGE_TRACE' =>true,  //调试模式时要设置

由于这个错误信息依赖于模板文件输出,所以一定要display出来,就像下面的

public function index(){    $Dao = M('User');    $user_list = $Dao->select();    $this->display();}

开启成功后,页面的右下角会有一个div块,点击展开能看到各种信息,如吞吐量,错误信息,执行时间等等。


4.数据库配置与访问


首先要设置好config.php中的参数 (上面第一点的配置已经有涉及)

以下一个简单的例子,debug模式下,如果没有报错,证明数据库连接成功了

public function test(){  $Dao = M('user'); //实例化user模型类        $user_list = $Dao->select();echo "<pre>";print_r( $user_list);echo "</pre>";       $this->display(); }



0 0
原创粉丝点击