首页 > 后端开发 > 正文

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

2024-11-17 16:20:11 | 我爱编程网

我爱编程网小编给大家带来了thinkphp与yii 哪个更优秀,分别是哪些方面优秀相关文章,一起来看一下吧。

本文目录一览:

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

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

要回答分别是哪些方面优秀我们先要明白,框架是用来干什么的。
框架的作用: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框架。

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

关于php连接mysql数据库mysql_connect()几个概念混乱的地方,求解释

第一个问题:
不是指的同一个用户的同时登陆,是指的总计的连接个数,不同的账号以及相同的账号,一个客户端连接就算一个,同一个洞差用户名可以被多个客户端同时连接

第二个问题
其实还是和客户端相关联的,100个连接的话,你开100个页面,每个页面不要共用连接资源变运蚂量,都重新建立连接,一般是使用mysql_pconnect 持久连接,同一个账号纳悄皮密码,采用同一个链接链路,

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

ThinkPHP 中系统函数有哪些

我爱编程网(https://www.52biancheng.com)小编还为大家带来ThinkPHP 中系统函数有哪些的相关内容。

首先给大家介绍ThinkPHP函数详解:M方法 M方法用于实例化一个基础模型类,和D方法的区别在于: 1、不需要自定义模型类,减少IO加载,性能较好; 2、实例化后只能调用基础模型类(默认是Model类)中的方法; 3、可以在实例化的时候指定表前缀、数据库和数据库的连接信息; D方法的强大则体现在你封装的自定义模型类有多强,不过随着新版ThinkPHP框架的基础模型类的功能越来越强大,M方法也比D方法越来越实用了。 M方法的调用格式: M('[基础模型名:]模型名','数据表前缀','数据库连接信息') 我们来看下M方法具体有哪些用法: 1、实例化基础模型(Model) 类 在没有定义任何模型的时候,我们可以使用下面的方法实例化一个模型类来进行操作: //实例化User模型 $User = M('User'); //执行其他的数据操作 $User->select(); 这种方法最简单高效,因为不需要定义任何的模型类,所以支持跨项目调用。缺点也是因为没有自定义的模型类,因此无法写入相关的业务逻辑,只能完成基本的CURD操作。 $User = M('User'); 其实等效于: $User = new Model('User'); 表示操作think_user表。M方法和D方法一样也有单例功能,多次调用并不会重复实例化。M方法的模型名参数在转换成数据表的时候会自动转换成小写,也就是说ThinkPHP的数据表命名规范是全小写的格式。 2、实例化其他公共模型类 第一种方式实例化因为没有模型类的定义,因此很难封装一些额外的逻辑方法,不过大多数情况下,也许只是需要扩展一些通用的逻辑,那么就可以尝试下面一种方法。 $User = M('CommonModel:User'); 改用法其实等效于: $User = new CommonModel('User'); 因为系统的模型类都能够自动加载,因此我们不需要在实例化之前手动进行类库导入操作。模型类CommonModel必须继承Model。我们可以在CommonModel类里面定义一些通用的逻辑方法,就可以省去为每个数据表定义具体的模型类,如果你的项目已经有超过100个数据表了,而大多数情况都是一些基本的CURD操作的话,只是个别模型有一些复杂的业务逻辑需要封装,那么第一种方式和第二种方式的结合是一个不错的选择。 3、传入表前缀、数据库和其他信息 M方法有三个参数,第一个参数是模型名称(可以包括基础模型类和数据库),第二个参数用于设置数据表的前缀(留空则取当前项目配置的表前缀),第三个参数用于设置当前使用的数据库连接信息(留空则取当前项目配置的数据库连接信息),例如: $User = M('db2.User','think_'); 表示实例化Model模型类,并操作db2数据库中的think_user表。 如果第二个参数留空或者不传,表示使用当前项目配置中的数据表前缀,如果操作的数据表没有表前缀,那么可以使用: $User = M('db1.User',null); 表示实例化Model模型类,并操作db1数据库中的user表。 如果你操作的数据库需要不同的用户账号,可以传入数据库的连接信息,例如: $User = M('User','think_','mysql://user_a:1234@localhost:3306/thinkphp'); 表示基础模型类用Model,然后对think_user表进行操作,用user_a账号进行数据库连接,操作数据库是thinkphp。 第三个连接信息参数可以使用DSN配置或者数组配置,甚至可以支持配置参数。 例如,在项目配置文件中配置了: 'DB_CONFIG'=>'mysql://user_a:1234@localhost:3306/thinkphp'; 则可以使用: $User = M('User','think_','DB_CONFIG'); 基础模型类和数据库可以一起使用,例如: $User = M('CommonModel:db2.User','think_'); 如果要实例化分层模型的话,利用公共模型类的方式,我们可以使用: M('UserLogic:User'); 来实例化UserLogic,虽然这样做的意义不大,因为可以用 D('User','Logic'); 实现同样的功能。 ThinkPHP函数详解:R方法 R方法用于调用某个控制器的操作方法,是A方法的进一步增强和补充。关于A方法的用法见这里。 R方法的调用格式: R('[项目://][分组/]模块/操作','参数','控制器层名称') 例如,我们定义了一个操作方法为: class UserAction extends Action { public function detail($id){ return M('User')->find($id); } } 那么就可以通过R方法在其他控制器里面调用这个操作方法(一般R方法用于跨模块调用) $data = R('User/detail',array('5')); 表示调用User控制器的detail方法(detail方法必须是public类型),返回值就是查询id为5的一个用户数据。如果你要调用的操作方法是没有任何参数的话,第二个参数则可以留空,直接使用: $data = R('User/detail'); 也可以支持跨分组和项目调用,例如: R('Admin/User/detail',array('5')); 表示调用Admin分组下面的User控制器的detail方法。 R('Admin://User/detail',array('5')); 表示调用Admin项目下面的User控制器的detail方法。 官方的建议是不要在同一层多太多调用,会引起逻辑的混乱,被公共调用的部分应该封装成单独的接口,可以借助3.1的新特性多层控制器,单独添加一个控制器层用于接口调用,例如,我们增加一个Api控制器层, class UserApi extends Action { public function detail($id){ return M('User')->find($id); } } 然后,使用R方法调用 $data = R('User/detail',array('5'),'Api'); 也就是说,R方法的第三个参数支持指定调用的控制器层。 同时,R方法调用操作方法的时候可以支持操作后缀设置C('ACTION_SUFFIX'),如果你设置了操作方法后缀,仍然不需要更改R方法的调用方式。 以上内容给大家分享了ThinkPHP函数详解之M方法和R方法,希望对大家有所帮助。 我爱编程网

以上就是我爱编程网小编给大家带来的thinkphp与yii 哪个更优秀,分别是哪些方面优秀,希望能对大家有所帮助。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“thinkphp与yii 哪个更优秀,分别是哪些方面优秀”相关推荐
php的优点有哪些
php的优点有哪些

php的优点有哪些PHP作为一种脚本语言,有以下几个优点:1.易于学习和使用:PHP的语法易于理解和上手,对初学者来说比较友好,很容易掌握。2.高度兼容性:PHP可以运行在几乎所有的操作系统上,并且支持大多数的Web服务器和数据库。3.足够的扩展性:PHP支持大量的扩展和库,各种功能模块化,方便快捷的模块化操作,可以让开发者轻松创建复杂的功能。4.开发速度快:PHP提

2024-08-23 03:00:27
Python爬虫技术与php爬虫技术对比,哪个更有优势?
Python爬虫技术与php爬虫技术对比,哪个更有优势?

php实现网络爬虫$url=/;$contents=file_get_contents($url);//如果出现中文乱码使用下面代码//$getcontent=iconv(”gb2312〃,“utf-8〃,file_get_contents($url));//echo$getcontent;echo$contents;然后在从字符串中找到你要的Py

2024-08-13 04:49:50
php做优化包括哪些内容?
php做优化包括哪些内容?

php做优化包括哪些内容?1:单引号代替双引号,双引号会去找变量。2:方法定义为static,性能提升4倍。3:$arr['id']的性能是$arr[id]的7倍。4:echo性能快,尽量使用echo$a,$b,$c而非echo$a.$b.$c。5:循环之前确定循环次数,尽量用foreach。6:注销不使用的变量,节省内存。7:尽量不使用魔法函数:__get、__se

2024-09-10 23:51:28
PHP语言的优缺点有哪些?
PHP语言的优缺点有哪些?

PHP语言的优缺点有哪些?PHP已然走进了我们的生活,改变着我们的生活方式,也许你并没有察觉到它的存在,但你一定感受到了,互联网给我们生活带来的便利是其他所无法比拟的,服务器端的语言有很多,为什么单独拿php说事呢,因为php在后端开发领域占了将近70%以上的市场份额,那么准备进行php培训学习的同学是不是了解一下PHP的优缺点会更好呢?优点一:状态每一个网页请求都是从一个完完

2024-09-15 18:52:28
最好用的框架是哪个?CI,YII,rails,thinkphp哪个好?
最好用的框架是哪个?CI,YII,rails,thinkphp哪个好?

php有没有rails类似的框架AkelosAkelosPHP框架是一个类似于RubyonRails的框架,是基于MVC(ModelViewController)设计模式的web应用开发平台。由于Akelos对服务器唯一的要求就是支持PHP,与其他类似框架相比它的代码应用写得较少,因此它可以在大多数共享主机服务器上运行,它通过约定俗成代替配置来帮助开发人员减少代码的编写数量。Akelos

2025-02-06 08:29:51
Python有哪些技术上的优点?比其他语言好在哪儿
Python有哪些技术上的优点?比其他语言好在哪儿

Python有哪些技术上的优点?比其他语言好在哪儿Python有这些优点:1.简单性:Python是一种代表简单性思想的语言;2.易于使用:Python易于使用,因为有简单易懂的文档;3.快速:运行速度很快;4.免费开源。1、简单性:Python是一种代表简单性思想的语言。2、易于使用:Python易于使用,因为有简单易懂的文档。3、快速:运行速度很快,因为Python中的标准库

2024-02-15 06:35:25
node.js与php相比有哪些优缺点?未来会替代php成为最好的语言吗
node.js与php相比有哪些优缺点?未来会替代php成为最好的语言吗

node.js与php相比有哪些优缺点?未来会替代php成为最好的语言吗在服务器后端的选择上,我倾向于使用PHP,但不得不承认Node.js在某些方面展现出强大的潜力。尽管如此,两种语言各有擅长的应用场景,很难说哪一种是最好的。PHP依然具备显著优势,尤其是在中小型企业的开发环境中。Node.js以其非阻塞、异步的I/O模型,能够高效处理大量并发连接,非常适合构建高性能的网络应用。它拥

2025-02-10 22:23:02
php和.net的优势和区别都是什么?
php和.net的优势和区别都是什么?

php和.net的优势和区别都是什么?相对于.net,PHP更偏向于解释性语言类型。在.NET开发中,我们操作的主要是一些封装好的对象-类库,而在PHP开发中,我们主要操作的对象则主要是各种函数。此外,PHP的编程工具相对于.NET的编程环境和数据库,显得非常轻量级,尤其是编程环境,既轻量级还很灵活。在.NET和PHP中,数据传递的方式主要有GET和POST两种(暂不考虑第三种情况)。

2025-02-03 11:52:11