Think PHP 6 .0 学习笔记
特性
- 全面支持组件模式开始
- 全面支持采用PHP7强类型特征
- 全面支持几乎所有的 PSR 开发规范
- 实现了多应用支持
- 全面引入事件系统代替行为
- 全新的应用服务架构
- 视图和模板引擎分离,项目配置更灵活
- IDE助手,使编辑器智能提示更准确
- 对原来版本的一些函数和类方法进行了统一和精简
环境要求
PHP 7.1 +
下载方式
通过 Composer 和 Git下载,Composer可以理解为一个应用商城
-
Composer 更新
-
composer selfupdate
-
Composer 下载 ThinkPHP 6.0 框架源码
-
composer create-project topthink/think tp6 6.0.*-dev
启动服务
切换到项目所在位置,输入以下命令,用来检测项目是否下载成功
php think run
系统的配置
系统推荐通过环境变量 .env
的方式进行系统的配置
举个栗子:(注:; 表示注释,database_type 中的database表示对应config文件夹中的database.php 文件)
.env 文件
; 开启跟踪器
app_trace = true
; 数据库的配置项
database_type = 'mysql'
database.php 文件
use thinkfacadeEnv;
'type' => Env::get('database_type');
数据库相关操作
// 使用 query() 来执行原生的SQL语句
Db::query("原生SQL语句");
// 使用查询构造器
// table() 表, where() 条件【支持字符串‘id = 1’,表达式字段,操作符,值】,find() 只得
// 到一条数据同时支持一主键作为条件,field()返回的字段,select()返回满足条件的所有记录,
// fetchSql(true)返回SQL语句,order("age desc")排序逆序同样支持字符串和表达式,
// limit() 限制返回的记录数,如果只传递一个参数这表示返回这个参数对应的那么多条记录,如果
// 是两个数据,则表示(页码,每页的长度)
Db::table('user')->where('id', 1)->find();
模型
- 本质还是对数据库的操作,不过它自己对该操作进行了一次
面向对象
的封装,数据表> 模型类,记录>模型对象,字段==>对象属性 ORM
使用方法:
// 实例化在操作
$user = new User();
dump($user->db()->find(1));
// 依赖注入(推荐)
public function index(User $user)
{
dump($user->db()->find(2));
}
- 新增数据操作 create(),他是一个静态方法,返回的数据是一个新增记录的对象,同样可以通过数组或对象的方式访问
- 在
TP6
中删除了get/all,直接用db()来调用Query类中的方法 - 数据更新 update(被更新的值,条件),也是一个静态方法
- 数据删除 destroy(条件),也是一个静态方法
public function index(User $user)
{
dump(Db::query("select * from `user` where id = :id", array('id' => 3)));
dump(Db::table('user')->where('id', 1)->field('name')->find());
// 创建模型对象
$res = $user->db()->find(2);
dump($res);
dump($user->db()->select());
// 插入数据
// User::create(array('id' => 4, 'name' => 'yuchan'));
// 更新
// User::update(array('name' => 2), array('id' => 2));
// 删除
// User::destroy(array('id' => 2));
}
视图
- 模板引擎是基于
smarty
- 模板的包含使用的是
include
或者require
标签
如果提示 Driver [Think] not supported
# 通过 composer 在项目根目录所在位置安装模板引擎
composer require topthink/think-view
- 通过 $view->fetch() 渲染到指定HTML文件中
class Index extends BaseController
{
public function muban(View $view)
{
return $view->fetch();
}
}
// 渲染到 view/index/muban.html
// 如果将 fetch() 添加参数,比如 fetch('muban2') 将渲染到 view/index/muban2.html
- 通过 $view->assign('模板文件中使用的变量名', '模板的值') 给模板赋值,在HTML中通过大括号加$来取值 ,举个栗子: {$name};$view->assign([])也可以通过数组的形式传递一组数据;同时也可以传递数组,举个栗子:{$user.name}或{$user['name']};还可以传递对象,举个栗子{$user->name}
- 预定义变量,可以通过 {$_GET['name']}或{$Think.get.name}来获取GET变量中的值
- 循环遍历的原生写法
<?php foreach($users as $user):?>
<!--<?php echo $user['name']?>-->
<!-- 或 -->
<?=$user?>
<?php endforeach;?>
- 通过 foreach 模板标签遍历
{foreach $users as $user}
{$user}
{/foreach}
- 通过 volist 模板标签遍历
{volist name="users" id="user"}
{$user}
{/volist}
- 通过 if 标签进行条件判断
{if ($user.name == 'GetcharZp')}
{$user.name}
{/if}