ThinkPHP笔记

基础

文件目录

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,649评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,039评论 25 707
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,801评论 6 342
  • 今天用swift3.0写collectionView的时候遇到一个BUG -然后在MyCell 里去算Cell里l...
    coderST阅读 843评论 0 1
  • 大自然果真是最好的调色师,从网上找了三色堇图片,挑了个喜欢的颜色参考一下配色^_^ 清理手机不知道线稿图弄哪去了,...
    梦扬云子阅读 791评论 1 9