thinkphp与yii 哪个更优秀,分别是哪些方面优秀

thinkphp与yii 哪个更优秀,分别是哪些方面优秀,第1张

yii更优秀,而且要比thinkphp优秀很多。

要回答分别是哪些方面优秀我们先要明白,框架是用来干什么的。

框架的作用:1、简化开发。2、提高工程的可维护性。3、规避编程语言本身的坑和陷阱。

那么我们就从这3个方面来讨论下着二者的优劣。

1、简化开发方面:从新手的视角来看(或者表面来看),thinkphp做项目更简单,因为其一提供了大部分web开发常用类库,其二中文手册写的很详细。但事实上,thinkphp有两个缺失的特性导致一旦项目做久或者稍微上规模,就会使人头痛不堪,这缺失的两个特性分别是:完整的AR支持以及完善的多层次模型

其次,web项目开发中大部分代码都是重复的,因此自动化代码生成工具是必不可少的,截至最新的tp3.2.3,我仍然没看到tp对自动化工具有任何支持的迹象

2、可维护性,缺失了完整的AR和多层次模型,代码不可能工整到哪里去,代码一多,源代码必然跟面条一样杂乱。最重要的时,TP没有unitTest,这导致重构都无门。同样,数据库方面,tp缺失了数据迁移工具,这都导致了项目后期维护由很大困难

3、规避编程语言本身的坑和陷阱:tp和Yii都是由PHP做的实现,PHP本身有很多的坑和陷阱,诸如混乱的语言结构与函数傻傻分不清的关系,变量转换的陷阱,凌乱不堪的类库命名。这些在yii里基本都得到了改善,Yii完全用面向对象的方式构建,常用web类库都以组件方式呈现,终于改善了PHP程序员边写代码边百度:‘XX功能该用哪个函数’的情况。反观TP,仅仅对常用类库封装成class,要用什么取什么,根本没做过精心的设计,完全像是一个多年的程序员攒了些类库,然后七拼八凑而成的一个框架,因此我常常说,thinkphp是个伪MVC框架。

本文实例讲述了Yii2框架 *** 作数据库的方法。分享给大家供大家参考,具体如下:

准备数据库

DROP

TABLE

IF

EXISTS

`pre_user`

CREATE

TABLE

`pre_user`(

`id`

int(11)

AUTO_INCREMENT

PRIMARY

KEY,

`username`

varchar(255)

NOT

NULL,

`password`

varchar(32)

NOT

NULL

DEFAULT

'',

`password_hash`

varchar(255)

NOT

NULL

DEFAULT

'',

`email`

varchar(255)

NOT

NULL

DEFAULT

'',

`status`

smallint(6)

NOT

NULL

DEFAULT

10,

`created_at`

smallint(6)

NOT

NULL

DEFAULT

0,

`updated_at`

smallint(6)

NOT

NULL

DEFAULT

0

)ENGINE=InnoDB

DEFAULT

CHARSET=utf8mb4

配置连接

config\db.php

<?php

return

[

'class'

=>

'yii\db\Connection',

'dsn'

=>

'mysql:host=localhostdbname=yii2',

'username'

=>

'root',

'password'

=>

'root',

'charset'

=>

'utf8mb4',

'tablePrefix'

=>

'pre_'

]

查看数据库连接是否成功

控制器里打印:

var_dump(\Yii::$app->db)

怎么执行SQL语句?

增删改

//

接收表单的数据

$username

=

'jack'

$sql

=

"INSERT

INTO

{{%user}}

(username,status)

VALUES

(:username,:status)"

//

返回受影响行数

$row

=

\Yii::$app->db->createCommand($sql,['username'=>$username,'status'=>8])->execute()

//

获取自增ID

echo

\Yii::$app->db->getLastInsertID()

查询

$sql

=

"SELECT

*

FROM

{{%user}}

WHERE

id>:id"

//

查询结果是一个二维数组

$userArr

=

\Yii::$app->db->createCommand($sql,['id'=>1])->queryAll()

//

如果要查询一个

$user

=

\Yii::$app->db->createCommand($sql,['id'=>1])->queryOne()

//

如果要返回单值

//

例如

select

count(*)语句

$count

=

\Yii::$app->db->createCommand($sql,['id'=>1])->queryScalar()

echo

$count

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库 *** 作入门教程》及《php常见数据库 *** 作技巧汇总》

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

您可能感兴趣的文章:Yii2.0高级框架数据库增删改查的一些 *** 作Yii2——使用数据库 *** 作汇总(增删查改、事务)Yii2数据库 *** 作常用方法小结Yii2框架实现数据库常用 *** 作总结Yii2实现跨mysql数据库关联查询排序功能代码Yii+MYSQL锁表防止并发情况下重复数据的方法Yii

连接、修改

MySQL

数据库及phpunit

测试连接Yii实现MySQL多数据库和读写分离实例分析Yii *** 作数据库实现动态获取表名的方法Yii *** 作数据库的3种方法


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10818917.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存