• Think PHP 6 .0 学习笔记


    Think PHP 6 .0 学习笔记

    特性

    1. 全面支持组件模式开始
    2. 全面支持采用PHP7强类型特征
    3. 全面支持几乎所有的 PSR 开发规范
    4. 实现了多应用支持
    5. 全面引入事件系统代替行为
    6. 全新的应用服务架构
    7. 视图和模板引擎分离,项目配置更灵活
    8. IDE助手,使编辑器智能提示更准确
    9. 对原来版本的一些函数和类方法进行了统一和精简

    环境要求

    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}
    
  • 相关阅读:
    例程详解
    js对数组中有相似属性对象进行合并
    javaScript放大镜特效
    css改变图标颜色
    js自定义日历
    vuecli4.0配置公共scss样式文件
    iframe根据子页面的内容来设置高度
    iframe父子页面交互
    artTemplate模板自定义函数
    javascript数组的增删改和查询
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/12174870.html
Copyright © 2020-2023  润新知