基础
文件目录
www WEB部署目录(或者子目录)
├─index.php 入口文件,保留在www目录
├─README.md README文件,可删除
├─Application 应用目录,为了安全,可放置www之外
├─Public 资源文件目录,保留在www目录
└─ThinkPHP 框架目录,为了安全,可放置www之外
入口文件
作用:
定义框架路径、项目路径(可选)
定义调试模式和应用模式(可选)
定义系统相关常量(可选)
载入框架入口文件(必须)
控制器
控制器类的命名方式是:控制器名(驼峰法,首字母大写)+Controller
控制器文件的命名方式是:类名+class.php(类文件后缀)
配置文件
配置文件格式
ThinkPHP框架中默认所有配置文件的定义格式均采用返回PHP数组的方式,格式为:
//项目配置文件
return array(
'DEFAULT_MODULE' => 'Index', //默认模块
'URL_MODEL' => '2', //URL模式
'SESSION_AUTO_START' => true, //是否开启session
'USER_CONFIG' => array(
'USER_AUTH' => true,
'USER_TYPE' => 2,
),
//更多配置参数
);
配置加载
配置加载顺序,右边最大
惯例配置->应用配置->模式配置->调试配置->状态配置->模块配置->扩展配置->动态配置
模式配置(可选)
如果使用了普通应用模式之外的应用模式的话,还可以为应用模式(后面会有描述)单独定义配置文件,文件命名规范是: Application/Common/Conf/config_应用模式名称.php(仅在运行该模式下面才会加载)。
模式配置文件是可选的
调试配置(可选)
如果开启调试模式的话,则会自动加载框架的调试配置文件(位于ThinkPHP/Conf/debug.php)和应用调试配置文件(位于Application/Common/Conf/debug.php)
状态配置(可选)
每个应用都可以在不同的情况下设置自己的状态(或者称之为应用场景),并且加载不同的配置文件。
举个例子,你需要在公司和家里分别设置不同的数据库测试环境。那么可以这样处理,在公司环境中,我们在入口文件中定义:
define('APP_STATUS','office');
那么就会自动加载该状态对应的配置文件(位于Application/Common/Conf/office.php)。
读取配置
C方法的使用
$get = C('配置属性名');
// 如果my_config尚未设置的话,则返回default_config字符串
C('my_config',null,'default_config');
//获取用户配置中的用户类型设置
C('USER_CONFIG.USER_TYPE');
动态配置
就是给配置参数赋予一个新的值
C('参数名称','新的参数值')
扩展配置
'LOAD_EXT_CONFIG' => 'user,db',
如果在模块(假设是Home模块)的配置文件中配置的话,则会自动加载模块目录下面的配置文件 Application/Home/Conf/user.php和Application/Home/Conf/db.php.
如果配置文件改成:
//加载扩展配置文件'LOAD_EXT_CONFIG' =>array('USER'=>'user','DB'=>'db'),
则最终获取用户参数的方式改成:
C('USER.USER_AUTH_ID');
批量配置
$config=array('WEB_SITE_TITLE'=>'ThinkPHP','WEB_SITE_DESCRIPTION'=>'开源PHP框架');
C($config);```
---
#架构
**URL访问规则**
http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...]
**自动生成模块目录、控制器、模型**
// 绑定Admin模块到当前入口文件
define('BIND_MODULE','Admin');
// 绑定Index控制器到当前入口文件
define('BIND_CONTROLLER','Index');
//第一种,生成更多控制器类的方法
define('BUILD_CONTROLLER_LIST','Index,User,Menu');
//第二种,生成更多控制器类的方法, 如果已经存在则不会重新生成。
\Think\Build::buildController('Admin','Role');
//第一种,生成模型类的方法
define('BUILD_MODEL_LIST','User,Menu');
//第二种,生成模型类的方法
\Think\Build::buildModel('Admin','Role');
define('APP_PATH','./Application/');
require './ThinkPHP/ThinkPHP.php';
**禁止访问模块**
// 设置禁止访问的模块列表
'MODULE_DENY_LIST' => array('Common','Runtime','Api'),
**设置访问列表**
'MODULE_ALLOW_LIST' => array('Home','Admin','User'),
'DEFAULT_MODULE' => 'Home',
**单模块设计**
如果你的应用够简单,那么也许仅仅用一个模块就可以完成,那么可以直接设置:
// 关闭多模块访问
'MULTI_MODULE' => false,
'DEFAULT_MODULE' => 'Home',
一旦关闭多模块访问后,就只能访问默认模块(这里设置的是Home)。
##多层MVC