ThinkPHP和Yii2的区别

ThinkPHP和Yii2的区别

  1. 从框架设计理念上

    Yii:定义是一个高性能,基于组件的PHP框架,采用严格的OOP编写,将程序拆分为可重用的组件,使得代码更易于维护和扩展

    ThinkPHP:宗旨是简化开发、提高效率、易于扩展,是旨在提供简单易用的开发体验,适合用于中小项目的开发

  2. 从配置上

    Yii:多重配置文件,覆盖配置,多重环境配置 ,分本地线上环境配置 ,更加灵活;

    ThinkPHP:相对而言,配置选项较少,通常只有一种主要配置方法。虽然也支持不同环境的配置,但灵活性和复杂度上不如 Yii。

  3. 脚手架

    Yii 的 Gii:Gii 是 Yii 提供的强大代码生成工具,可以快速生成模型、控制器和 CRUD 操作。这确实可以显著减少开发时间和降低错误率。

    ThinkPHP:虽然也有一些生成代码的工具,但相较于 Yii 的 Gii 功能,可能不够强大和灵活。

  4. GET 与 POST

    Yii:通常采用更为简洁的方式处理 GET 和 POST 请求,强调一致性和简洁性。参数获取主要通过 Yii::$app->request 进行。

    ThinkPHP:在参数获取上提供了多种方式,灵活性较高,可以通过多种方式获取请求参数(如使用 input() 函数等)。

  5. 验证层

    Yii:通过模型的规则(rules)进行验证,这是一种结构化且集中管理的方式,便于维护和扩展。

    ThinkPHP:使用单独的验证类进行验证,虽然功能强大,但在某些情况下可能会导致验证逻辑分散。

  6. ORM

    Yii 的 ORM:通常采用数组的方式进行查询,更加规范化,但在某些情况下可能不如 ThinkPHP 灵活。

    • 使用原生 SQL 字符串
    use app\models\User;
    
    // 查询状态为 'active' 且年龄大于 18 的用户
    $users = User::find()
        ->where('status = :status AND age > :age', [':status' => 'active', ':age' => 18])
        ->all();
    
    • 结合使用数组和原生条件
    $users = User::find()
        ->where(['status' => 'active']) // 使用数组条件
        ->andWhere('age > :age', [':age' => 18]) // 使用原生 SQL 条件
        ->all();
    
    • 使用 IN 条件
    $users = User::find()
        ->where(['status' => 'active']) // 使用数组条件
        ->andWhere('age > :age', [':age' => 18]) // 使用原生 SQL 条件
        ->all();
    
    • 复杂查询也可以用字符串,但整体美观不如数组
    $users = User::find()
        ->where('status = :status AND (age < :age OR email LIKE :email)', [
            ':status' => 'active',
            ':age' => 30,
            ':email' => '%example.com'
        ])
        ->all();
    

    ThinkPHP 的 ORM:确实提供了更灵活的方式,可以使用字符串或数组进行查询,适应不同开发者的习惯。

    • 使用字符串构建查询
    use app\model\User;
    
    // 查询状态为 'active' 的用户
    $users = User::where('status = ?', 'active')->select();
    
    // 查询邮箱包含 'example.com' 的用户
    $users = User::where('email LIKE ?', '%example.com%')->select();
    
    • 使用数组构建查询
    use app\model\User;
    
    // 查询多个条件
    $users = User::where([
        'status' => 'active',
        'age' => ['>', 18]
    ])->select();
    
    // 查询多个条件,使用数组方式组合
    $users = User::where('status', 'active')
                 ->where('age', '>', 18)
                 ->select();
    
    • 组合使用
    use app\model\User;
    
    // 组合条件查询
    $users = User::where('status = ?', 'active')
                 ->where(['age' => ['>', 18], 'gender' => 'female'])
                 ->select();
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值