Home > Article > Backend Development > 【Yii】刚接触Yii谈一下对Yii框架的看法和感受 (Yii 1.1.x)
之所以想到去弄Yii,因为看到很多招聘PHP都要求必须精通Yii框架。
首先的印象这个框架是中国人创始的,但是却全都是英文的为主。这几天看了一下Yii权威指南。
说一下自己的初步感受(Yii 1.x):
1)文件结构凌乱。
既然是框架,却可以将action独立出来/protected/controllers/post/CreateAction.php。这样极容易让action与controller混乱。
2)对视图的控制欲太强烈,模板使用的是纯PHP。难道你做程序员也非得去写前端?
一个网站项目,让美工切出了HTML DIV CSS模板之后,又让PHP程序员再把里面的HTML标签换成PHP标签再搞一趟?
Yii的CHtml让很多人特别赞不绝口,但是他们似乎忽略了一个最核心的关键,网站 网页有功能没卖相根本就会很惨,你不要指望访客都会像程序员那种只喜欢方方框框没有一张图全都是表格一样、对得工工整整的页面。
要注意:网站网页他不像软件,软件可能几年十几年都是做的功能改进,但网页,访客喜欢新鲜感,界面视觉,所以需要不断的改界面,改UI。
是定期修改,三天一小改,一个月一大改,三个月重新改。界面需要经常改。这样的情况下,如果直接使用html原型来做模板,美工做好DIV之后就可以直接用,根本都不需要程序插手。可是如果用了CHtml这样 高度耦合的视图(模板)写法,那么必须得 多出一道工序,那就是还需要一个懂得Yii的程序员将美工已经做好的DIV HTML再转成Yii视图模板中的标签,这样不是浪费吗?人力、时间、财力。与PHP的高效快速 背道而行?
实际上Yii的官网也是极其简陋的,苹果为什么会成功,卖相是关键,现在这个时代,UI界面真的太重要了。
3)感觉各个之间耦合度太高了,犹如一门新的语言。
Yii入门门槛比其他的框架高很多。各个之间都是高度耦合,都是些配置一样的设置,越是耦合越紧密,配置文件越是分散各个角落其实维护起来成本更高、时间更长、维护效率更低(当然,他可能运行效率很快)。
Yii对我的吸引:
1)51job、智联招聘上很多招PHP程序员的都要求需要精通Yii(其实看到那些要求我觉得很奇怪,描述上又要能够独立完成一整个项目又要精通Yii又要端精通DIV CSS UI,想让别人一个人搞,有点不合实际,Yii适合大型项目,如果一个大型项目中又要让程序员干Yii又要让他去写DIV这样不可笑吗?)
2)网上很多次方充满着对Yii的赞美、推荐,比如知乎上、搜索引擎中搜索MVC框架排名看到各大转载的文章、PHP MVC框架排名上,Yii都排名得很前,且很多神赞。
以上是我对Yii初步接触的一些感受,写出来希望能够一起探讨,目的是能够更快的掌握、领悟。by default7#zbphp.com
欢迎了解 Yii2.0,你说的绝大多数问题在Yii 2.0 时代都有更好的实现了。
至于用PHP做模版,这个属于仁者见仁智者见智的问题。学会模版引擎跟学会PHP差不了多少。2.0原生支持smarty和twig
至于耦合度的问题,只要你想,解耦根本不是问题,Yii提供的是一站式解决方案,一个字,就是快,之后你想替换组件,改模版,加缓存,随你便。2.0原生支持多种解耦,比如DI。
至于像新语言的问题,因为Yii大量使用了DSL的模式。这个模式是微软发明的。为什么用,因为好用。
至于混乱的问题,你没有学到ActiveRecord,没用用到ActiveForm。这些东西的彼此搭配才是现代PHP框架的核心啊。这些特色的点你都没有说到,用好了效率灰常灰常高。Yii2.0新增了全新的查询与表现分离的ActiveQuery以及更吊的多关系查询,有空了解下。
除此之外的功能还有安全性设计,GII代码生成器,开发者工具条,调试模式,Codeception调试器,Fixture数据定制器,Bootstrap扩展等等等等不胜枚举的特性,学习曲线本身不是问题,这些特性你不用也没关系,当原生PHP一样用也好用,但是学习曲线是和收益成正比的,用过你就放不下了。
功夫要下到,你不会不代表它不能,这么多企业用Yii,难道他们的CTO傻?
你这是只看到yii的缺点,没看到yii2的优点。任何框架都会有缺点。
1、yii最主要的精华是OOP。
这个是yii框架的整个功能的所在,也是是公司招聘的主要原因
2、就像楼上所说的yii提供了各种便捷的功能,所以开发速度快。
3、文件结构凌乱
这个完全是按照个人习惯来组织,你可以这样写
protected
actions
post
CreateAction.php
ReadAction.php
controllers
PostController.php
4、至于表单问题
这个要看个人需要,如果做的表单页面是中规中矩的,可以使用ActiveForm。
当然,你可以完全不用ActiveForm,自己写html来实现,ActiveForm只是给你提供了一种方便。
效率比tp ci什么的高多了!
没用过 Yii,也没打算用。表示没有就业压力
据说 Yii2.0 这能工作于 php 5.4 及以上了
所以模板中的
楼主对 Yii 模板的批评,也就是对 Smarty 的批评,也就是对所有使用模板引擎将业务逻辑与视图分离的框架的批评,也就是对 MVC 这种设计模式的批评
姑且言之,姑妄听之
如果要在模板中引入控制流,那么与其象 Smarty 自创一套模板语言,还真不如象 Yii 这样直接使用 php 代码
至少是学习难度下降了,何况学会了 php ,吃饭也总算有着落了
我倒是期望有这样一个框架:他能将在 html 声明为客户端运行的php代码翻译成 js 代码。从而免去学 php 还要学习 js 的烦恼
个人认为说的没任何道理,你说的几点只是框架提供的一个功能而已
1)文件结构凌乱:框架有强制你把action单独写出来么?完全可以写到 Controller
2)对视图的控制欲太强烈:和第一条一样,没人强制你用上这个功能,我自己做表单看情况是否启用ActiveForm,哪个方便用哪个
事实证明,正规的公司都是分工明确不会让美工去干前端人员切片的活,甚至让美工或前端去套程序,只有那些比较坑的网建公司、非正规公司才会这样去做,出一个人的薪水干几个工种的工作
框架只是一个提升工作效率的工具,看你怎么去用,不是让你把所有内置功能全部用上,不要被框架框住!
至于Chtml做表单ActiveForm,可用可不用。但是个人觉得yii最优秀的莫过于OOP和MVC,还有它的灵魂:随用随取,而并不是运行就把所有的类加载进来,这也是其效率所在了!也是很多企业要求YII的原因了。
用Yii完成了2个项目了,正在做第三个,这次这个项目相对比较大,功能也较多。
前两个项目一次和别人合作,一次完全自己做的,自己做的一次是做一个票务系统,因为整体界面要求不高,我就没有找前端,全部自己写了。
现在感觉Yii的整体设计用起来真是舒服,本身基于组件的框架使其具有极高的定制性,就像楼上所说的,有很多功能你觉得不好纳尼完全可以不用,有很多替代方案,Yii只是给你多了一个选择,如果你觉得好像没什么替代方案只能说明对框架不够熟悉,个人感觉Yii还是值得钻研一下的
yii对初学者来说确实有点复杂,不过用时间久了就能体会到好处了,它确实是个极优秀的框架。刚开始可能感觉不出来,等到后期维护的时候就能发觉,它真的是很方便,非常灵活,想怎么改就怎么改,哪怕需求变了,用它也可以快速完成。当然,前提是你得保证设计应该合理
1)文件结构凌乱。
既然是框架,却可以将action独立出来/protected/controllers/post/CreateAction.php。这样极容易让action与controller混乱。
独立出来的Action一般都是用的地方比较多的或者业务比较复杂的,独立出来很正常。框架里面有这种写法,但是没有强制要用,你觉得不好完全可以不用这种方法。没有必要为了体现自己yii学的灰常流弊而要把yii里面所有的技术都用到项目上。“对症下药”,该用的用,不该用的强加进去反而不太好。
过滤器filters那个情况也还可以
+表示要过滤的Action
-表示除这些以外都要过滤
不写则全部Action都要过滤
+-我一开始用也有点别扭,但还可以接受
如果是字符串则在第一个字符串前面加个filter,满足条件的会调用filterPostOnly(你那个例子)
如果是数组则是一个CFilter的子类,实现两个方法
具体要不要用,用哪种,完全取决开发人员,框架没有强制
像CHtml这样的,做后台还可以,毕竟看的人只有自己,做前台确实不合适,但框架没有强制要用这些,所以不碍事
模板那个问题我觉得也不是问题,这样反而更好点,你觉得非常要像tp那样,用那些模板标签更好,开端把页面做好就行了,那些模板标签还是自己来写,他们又不知道。用yii还不是一样的,只不过写的不是模板标签,而是PHP语句,这样反而省了一步,tp中间还要一步把模板标签替换成PHP语句的过程 。
yii还是有好的地方的,一个框架不可能让所有用的人都满意的,如果你觉得哪里不太好,你完全可以按自己的要求定制一下(注意后期框架的升级问题)