稳哥的小灶 2019-07-01
简介
免费开源,面向对象的轻量级PHP开发框架,实现懒性加载,灵活的路由,依赖注入,请求缓存,查询语法,支持Composer.
Git安装:
git clone https://github.com/top-think/think 再 clone https://github.com/top-think/framework 将名称改为thinkphp 运行环境: PHP >= 5.4.0 (完美支持PHP7), PDO PHP Extension, MBstring PHP Extension ,CURL PHP Extension
目录命名:
|─application 应用目录(可设置)
│ ├─common 公共模块目录(可更改)
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ └─ ... 更多类库目录
│ ├─command.php 命令行工具配置文件
│ ├─common.php 应用公共(函数)文件
│ ├─config.php 应用(公共)配置文件
│ ├─database.php 数据库配置文件
│ ├─tags.php 应用行为扩展定义文件
│ └─route.php 路由配置文件
├─extend 扩展类库目录(可定义)
├─public WEB 部署目录(对外访问目录)
│ ├─static 静态资源存放目录(css,js,image)
│ ├─index.php 应用入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于 apache 的重写
├─runtime 应用的运行时目录(可写,可设置)
├─vendor 第三方类库目录(Composer)
├─thinkphp 框架系统目录
│ ├─lang 语言包目录
│ ├─library 框架核心类库目录
│ │ ├─think Think 类库包目录
│ │ └─traits 系统 Traits 目录
│ ├─tpl 系统模板目录
│ ├─.htaccess 用于 apache 的重写
│ ├─.travis.yml CI 定义文件
│ ├─base.php 基础定义文件
│ ├─composer.json composer 定义文件
│ ├─console.php 控制台入口文件
│ ├─convention.php 惯例配置文件
│ ├─helper.php 助手函数文件(可选)
│ ├─LICENSE.txt 授权说明文件
│ ├─phpunit.xml 单元测试配置文件
│ ├─README.md README 文件
│ └─start.php 框架引导文件
├─build.php 自动生成定义文件(参考)
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
注意,如果是mac/linux环境下,请确保runtime目录有可写权限,建议public目录作为web目录访问内容.命名规范:
建议在开发阶段一直开启,正式部署关闭调试模式.'app_debug' =>false, 可配置.env文件的格式 app_debug = true 但定义之后,配置文件中定义app_debug将无效.
URL和路由:
路由让URL更加规范,隐式传入额外请求参数,统一拦截并进行权限检查等操作.绑定请求参数,使用请求缓存,路由中间件支持.
采用单一入口模式访问应用,对应用的所有请求都定向到应用的入口文件,系统会从URL参数解析当前请求的模块,控制器和操作.路由功能由thinkRouter类完成。
路由解析的过程: 路由定义-->路由检测-->路由解析->路由调度
格式:http://serverName/index.php/module/controller/action/param/value/...
入口文件:可以去掉URl地址里面的入口文件index.php,使用PHPStudy则修改Public下的.htaccess文件.
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>参数传入,通过操作方法的参数绑定功能,可以实现自动获取URL的参数.
public function hello($name = 'world')
{
return $name;
}视图
新建一个view/index.html 在控制器做一下修改.
use think\Controller;
class Index extends Controller
{
public function hello($name = 'thinkphp')
{
$this->assign('name', $name);
return $this->fetch();
}
}请求和响应:
Request请求对象和Response响应对象的基本用法与获取请求变量,以及进行不同的输出响应,跳转,和页面重定向.
Request对象的作用是与客户端交互,收集客户端的Form,Cookies,超链接,或者收集服务器的环境变量.ThinkPHP5的Request对象由thinkRequest类完成.
数据库: Db类操作数据库。
类拆分为Connection(连接器)/Query(查询器)/Builder(SQL生成器),查询语法,闭包查询和闭包事务,链式操作,数据分批处理和数据库SQL执行监听.
查询数据:
CREATE TABLE IF NOT EXISTS `think_data`(
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL COMMENT '名称',
`status` tinyint(2) NOT NULL DEFAULT '0' COMMENT '状态',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
INSERT INTO `think_data`(`id`,`name`,`status`) VALUES
(1,'thinkphp',1),
(2,'onethink',1),
(3,'topthink',1);原生查询,两个方法query和execute,分别用于查询操作和写操作.数据库查询构造器,方便执行数据库操作,构造器基于PDO实现,使用PDO参数绑定,保护应用程序免于SQL注入.
//插入记录
#result = Db:execute('insert into think_data (id,name,status) values (5,"thinkphp",1)');
dump($result);
//更新记录
$result = Db::excute('update think_data set name = "framework" where id = 5 ');
dump($result);
//读取
$result = Db::query('select * form think_data where id = 5');
dump($result);
//query方法返回一个数据集(数组),如果没有查询到数据则返回空数组.
//删除delete
$result = Db::excute('delete form think_data where id =5');
dump($result);
// 显示数据库列表
$result = Db::query('show tables from demo');
dump($result);
// 清空数据表
$result = Db::execute('TRUNCATE table think_data');
dump($result);
//切换数据库操作: 略.查询语言
ThinkPHP5.0的查询语法,以及如何使用查询构建器进行查询操作,
ThinkPHP采用ORM的封装,基本特性就是表映射到模型,记录映射到模型对象实例,字段映射到对象属性.Db类的查询默认返回的是数组(或者集合),模型类返回的是当前的模型对象实例(或者集合)
接口数据统一以JSON格式数据输出到客户端.