Thinkphp5讲解

Thinkphp5讲解

一、简介

ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简 化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的 代码的同时,也注重易用性。遵循 Apache2 开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允 许把你基于ThinkPHP开发的应用开源或商业产品发布/销售。

ThinkPHP5.0版本是一个颠覆和重构版本,采用全新的架构思想,引入了更多的PHP新特性,优化了核 心,减少了依赖,实现了真正的惰性加载,支持composer,并针对API开发做了大量的优化,包括路由、 日志、异常、模型、数据库、模板引擎和验证等模块都已经重构,不适合原有3.2项目的升级,请慎重考虑 商业项目升级,但绝对是新项目的首选(无论是WEB还是API开发)。

主要特征:

规范:遵循PSR-2、PSR-4规范,Composer及单元测试支持; 严谨:异常严谨的错误检测和安全机制,详细的日志信息,为你的开发保驾护航; 灵活:减少核心依赖,扩展更灵活、方便,支持命令行指令扩展; API友好:出色的性能和REST支持、远程调试,更好的支持API开发; 高效:惰性加载,及路由、配置和自动加载的缓存机制; ORM:重构的数据库、模型及关联,MongoDb支持

二、安装thinkphp

ThinkPHP5 的环境要求如下:

PHP >= 5.4.0 PDO

PHP Extension MBstring

PHP Extension CURL

PHP Extension

严格来说, ThinkPHP 无需安装过程,这里所说的安装其实就是把 ThinkPHP 框架放入 WEB 运行环境(前 提是你的WEB运行环境已经OK),可以通过下面几种方式获取和安装ThinkPHP。

一、官网下载安装 获取 ThinkPHP 的方式很多,官方网站(http://thinkphp.cn)提供了稳定版本或者带扩展完整版本的下载。

开发规范

命名规范

ThinkPHP5 遵循 PSR-2 命名规范和 PSR-4 自动加载规范,并且注意如下规范:

目录和文件 目录使用小写+下划线; 类库、函数文件统一以 .php 为后缀; 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致; 类文件采用驼峰法命名(首字母大写),其它文件采用小写+下划线命名; 类名和类文件名保持一致,统一采用驼峰法命名(首字母大写); 函数和类、属性命名 类的命名采用驼峰法(首字母大写),例如 User 、 UserType ,默认不需要添加后缀,例如 UserController 应该直接命名为 User ; 函数的命名使用小写字母和下划线(小写字母开头)的方式,例如 get_client_ip ; 方法的命名使用驼峰法(首字母小写),例如 getUserName ; 属性的命名使用驼峰法(首字母小写),例如 tableName 、 instance ; 以双下划线“”打头的函数或方法作为魔法方法,例如 `call 和 __autoload`; 常量和配置 常量以大写字母和下划线命名,例如 APP_PATH 和 THINK_PATH ; 配置参数以小写字母和下划线命名,例如 url_route_on 和 url_convert ; 数据表和字段 数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如 think_user 表和 user_name 字段,不建议使用驼峰和中文作为数据表字段命名。 应用类库命名空间规范 应用类库的根命名空间统一为app(可以设置 app_namespace 配置参数更改); 例如: app\index\controller\Index 和 app\index\model\User 。

目录结构

常用的目录结构

入口文件

pubic/index.php

入口文件 用户请求的PHP文件,负责处理一个请求(注意,不一定是URL请求)的生命周期,最常见的入口文件就是 index.php ,有时候也会为了某些特殊的需求而增加新的入口文件,例如给后台模块单独设置的一个入口 文件 admin.php 或者一个控制器程序入口 think 都属于入口文件。

应用目录application

模块目录 index

一个典型的应用是由多个模块组成的,这些模块通常都是应用目录下面的一个子目录,每个模块都有自己独 立的配置文件、公共文件和类库文件。

控制器controller

控制器 index.php

操作(方法)

一个控制器包含多个操作(方法),操作方法是一个URL访问的最小单元。

从上到下的路径依次是

三层 控制器 模型 视图

其中model和view是需要自己建立的

默认走的路径是

从入口文件出发 public/index.php(入口文件)

public/index.php(入口文件)/index(模块)/index(控制)/index(操作 方法)

应用的配置文件

如何开启错误调试模式

控制器和视图的关系

如何开启错误调试模式

登录功能的实现

使用mysql设计数据表

并插入测试数据

设置提交地址

index.php控制器中

接收数据验证

public function add(){

$data= input();//input 接收用户提交的表单数据 其实代替的是 $_GET 和 $_POST

//在thinkphp中不建议使用$_GET 和 $_POST 这种原生的写法

/* print_r($data);*/

//在控制器中实例化模型层

$res=model("User")->getOne($data);//此处的$data 就是用户提交的所有的数据

//model 代表模型的意思 调用它里面的 getOne($data) 传入的条件 支持数组形式

echo model('User')->getLastSql();//把这一句话加上看有输出吗?

//getlastsql得到上一条执行的sql语句

if($res){

//笑脸

$this->success("登录成功",'adduser');//页面跳转 参数1 提示信息 参数 要跳转的地址

}else{

//哭脸

$this->error("用户名或密码输入有误");

}

/* print_r($res);*/

}

添加功能的实现

1、控制器中书写方法 渲染页面

//添加功能 ① 书写方法渲染页面

public function adduser(){

return view();//渲染页面

}

2、新建一个hml文件

这是用户的添加页面

用户名:

密码:

3、在控制器中接着书写接收数据添加数据的功能

//添加用户的功能

//执行添加功能的操作

public function addUserdo(){

$data= input();//接收数据

$res= model("User")->addOne($data);

echo model("User")->getLastSql();//输出上一条sql语句

if($res){

$this->success("添加成功",'show');

}else{

$this->error("添加失败");

}

}

4、在模型层熟悉添加一条的方法

//添加数据 ③在模型层中书写添加的方法

/**

* 添加一条的方法

* @param $data

* @return int|string 受影响的条数

*/

public function addOne($data){

return $this->insert($data);//thinkphp5中插入数据的关键字是insert

}

页面跳转在控制器中

$this->success("添加成功",'show');//参数1 提示信息 参数 跳转的地址

$this->error("添加失败")

在HTML页面中使用

{:url('addUserdo')} addUserdo 跳转的地址

常见错误

路径不全的问题

数据库没有配置

密码书写有误

no 没有写密码

Top