ThinkPHP5.0框架学习

一 、 什么是php框架

php框架有助于促进应用开发,不但节省开发时间,有助于建立更为稳定的应用,而且减少了重复代码的开发。

目录结构

初始的目录结构如下:

www  WEB部署目录(或者子目录)

├─application          应用目录

│  ├─common            公共模块目录(可以更改)

│  ├─module_name        模块目录

│  │  ├─common.php      模块函数文件

│  │  ├─controller      控制器目录

│  │  ├─model          模型目录

│  │  ├─view            视图目录

│  │  └─ ...            更多类库目录

│  │

│  ├─command.php        命令行定义文件

│  ├─common.php        公共函数文件

│  └─tags.php          应用行为扩展定义文件

├─config                应用配置目录

│  ├─module_name        模块配置目录

│  │  ├─database.php    数据库配置

│  │  ├─cache          缓存配置

│  │  └─ ...           

│  │

│  ├─app.php            应用配置

│  ├─cache.php          缓存配置

│  ├─cookie.php        Cookie配置

│  ├─database.php      数据库配置

│  ├─log.php            日志配置

│  ├─session.php        Session配置

│  ├─template.php      模板引擎配置

│  └─trace.php          Trace配置

├─route                路由定义目录

│  ├─route.php          路由定义

│  └─...                更多

├─public                WEB目录(对外访问目录)

│  ├─index.php          入口文件

│  ├─router.php        快速测试文件

│  └─.htaccess          用于apache的重写

├─thinkphp              框架系统目录

│  ├─lang              语言文件目录

│  ├─library            框架类库目录

│  │  ├─think          Think类库包目录

│  │  └─traits          系统Trait目录

│  │

│  ├─tpl                系统模板目录

│  ├─base.php          基础定义文件

│  ├─console.php        控制台入口文件

│  ├─convention.php    框架惯例配置文件

│  ├─helper.php        助手函数文件

│  ├─phpunit.xml        phpunit配置文件

│  └─start.php          框架入口文件

├─extend                扩展类库目录

├─runtime              应用的运行时目录(可写,可定制)

├─vendor                第三方类库目录(Composer依赖库)

├─build.php            自动生成定义文件(参考)

├─composer.json        composer 定义文件

├─LICENSE.txt          授权说明文件

├─README.md            README 文件

├─think                命令行入口文件

一、 URL访问

在没有定义路由的情况下典型的URL访问规则是:

http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/参数值...]

开发规范


1、目录和文件

1. 目录使用小写+下划线;

2. 类库、函数文件统一以.php为后缀;

3. 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致;

4. 类名和类文件名保持一致,统一采用驼峰法命名(首字母大写);

2、函数和类、属性命名

1. 类的命名采用驼峰法(首字母大写),例如User、UserType,默认不需要添加后缀,例如UserController应该直接命名为User;

2. 函数的命名使用小写字母和下划线(小写字母开头)的方式,例如get_client_ip;

3. 方法的命名使用驼峰法(首字母小写),例如getUserName

4. 类的命名采用驼峰法(首字母大写),例如User、UserType,默认不需要添加后缀,例如UserController应该直接命名为User;

3、常量和配置

1. 常量以大写字母和下划线命名,例如APP_PATH;

2. 配置参数以小写字母和下划线命名,例如url_route_on和url_convert;

4、数据表和字段

数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如 think_user 表和 user_name字段,不建议使用驼峰和中文作为数据表及字段命名。

5、应用类库名空间规范

应用类库的根命名空间统一为app(可以设置app_namespace配置参数更改);例如:app\index\controller\Index 和app\index\model\User;

6、避免使用PHP保留字作为常量。


二、请求


1、请求信息

Request对象的作用是与客户端交互,收集客户端的From、Cookie、超链接,或者收集服务器端的环境变量。

2、获取URL信息

3、变量获取

变量获取使用\thinkk\Request类的如下方法及参数:

变量类型方法包括:

方法                                                                     含义

host                                                                      当前访问域名或者IP

scheme                                                                 当前访问协议

port                                                                        当前访问的端口

remotePort                                                            当前请求的REMOTE_PORT

protocol                                                                  当前请求的SERVER_PROTOCOL

contentType                                                            当前请求的CONTENT_TYPE

domain                                                                    当前包含协议的域名

subDomain                                                              当前访问的子域名

panDomain                                                              当前访问的泛域名

rootDomain                                                              当前访问的根域名(V5.1.6+)

url                                                                            当前完整URL

baseUrl                                                                    当前URL(不含QUERY_STRING)

query                                                                       当前请求的QUERY_STRING参数

baseFile                                                                   当前执行的文件

rootURL                                                                   访问根地址

rootUrlURL                                                              访问根目录

pathinfo                                                                    当前请求URL的pathinfo信息(含URL后缀)

path                                                                         请求URL的pathinfo信息(不含URL后缀)

ext                                                                           当前URL的访问后缀

time                                                                         获取当前请求的时间

type                                                                        当前请求的资源类型

method                                                                   当前请求类型


三、数据库

db助手函数默认会每次重新连接数据库,因此应当尽量避免多次调用。

注意:使用db助手函数默认每次都会重新连接数据库,而使用Db::name 或者Db::table方法的话都是单例。db函数如果需要采用相同的链接,可以传入第三个参数,例如:

db('user',[],false)->where('id',1)->find();

db('user',[],false)->where('status',1)->select();

上面的方式会使用同一个数据库连接,第二个参数为数据库连接参数,留空表示采用数据库配置文件的配置。

四、查询数据

select()方法用于查询数据集,如果成功,返回的是一个二维数组,如果没有成功则返回空数组,find()方法用于查找满足条件的第一个记录,如果成功,返回一个一维数组,没有满足条件返回null。

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

推荐阅读更多精彩内容