一 、 什么是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。