【Yii】刚接触Yii谈一下对Yii框架的看法和感受 (Yii 1.1.x)

用户昵称不能为空 2014-06-10 12:43:34
之所以想到去弄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






...全文
8862 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_26538555 2015-11-30
  • 打赏
  • 举报
回复
与各位全功能大神相比我比较赞同楼主的第二点观念,现在的网站包括系统,卖相是比较看中的,yii框架效率自然是没得说,但是对于视图的控制欲却是太高了,对于前端也是很麻烦的一件事情,简单的说yii框架就是对php后台的优化而将前端复杂化,对于项目的障碍着实比较大,就这一点我认为就算是致命的一点吧,毕竟现在开发项目,为实现功能上的扩展,会引入各种各样的功能,好比许多前端框架,如果这成为阻碍的话,我认为完全没有必要选择它
漩涡Lucas 2015-08-29
  • 打赏
  • 举报
回复
呵呵,用过laravel再用yii2,感觉yii2简直蠢哭了
lobtao 2015-02-14
  • 打赏
  • 举报
回复
我就用它的数据库操作和权限控制,非 ar的数据库操作
cl00556688 2014-12-18
  • 打赏
  • 举报
回复
小伙子等你理解透了 再回头想想……
每日涨停推算 2014-11-30
  • 打赏
  • 举报
回复
DSL这么牛,yii2中还用composer.json 啊?搞笑,1个数据结构还叫做语言,
每日涨停推算 2014-11-30
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
没用过 Yii,也没打算用。表示没有就业压力 据说 Yii2.0 这能工作于 php 5.4 及以上了 所以模板中的 <?php echo 一律可简化为 <?=,而无需顾及 short_open_tag 的状态 ==================================== $var 就代表 《?php echo $var ;?》 ,这才是最好的模板语言,精简、字少。 后期用模板设计工具来做所见即所得,类似delphi那样才是比较好的。 ==================================== 我倒是期望有这样一个框架:他能将在 html 声明为客户端运行的php代码翻译成 js 代码。从而免去学 php 还要学习 js 的烦恼 ==================================== php学js估计比学模板语言差不多,模板语言是一门没有用处的语言(除非大量简化语法、高内聚减少工作量,否则没意义), 而js能做的不一样, php转为js代码是一个看起来目的不明的想法。.... ====================================
dfdfdfdfdf
每日涨停推算 2014-11-30
  • 打赏
  • 举报
回复
引用 1 楼 qiansen1386 的回复:
欢迎了解 Yii2.0,你说的绝大多数问题在Yii 2.0 时代都有更好的实现了。 至于用PHP做模版,这个属于仁者见仁智者见智的问题。学会模版引擎跟学会PHP差不了多少。Yii提供的是一站式解决方案,一个字,就是快,之后你想替换组件,改模版,加缓存,随你便。2.0原生支持多种解耦,比如DI。 ==================================== yii2改模板,快毛线! ==================================== 至于像新语言的问题,因为Yii大量使用了DSL的模式。这个模式是微软发明的。为什么用,因为好用。 ==================================== 忍不住就喷了! 什么狗屁微软推荐的DSL模式好用,就是xml那种烂结构改个名字就叫什么“领域专用语言”(Domain Specific Language )! xml好用吗?去*Mei 的,比json和google设计出来的结构烂10倍! ==================================== 至于混乱的问题,你没有学到ActiveRecord,没用用到ActiveForm。这些东西的彼此搭配才是现代PHP框架的核心啊。这些特色的点你都没有说到,用好了效率灰常灰常高。Yii2.0新增了全新的查询与表现分离的ActiveQuery以及更吊的多关系查询,有空了解下。 ==================================== 笑,activeRecord还效率高?aR的性能本身不说,就说开发效率: 任何一个phper用了复杂的工具,不管你理念多高明,你对web的功能模块和需求分析没有去做、没有去通盘分析和把握(需求分析 + 常用模块设计经验)! 那么你不但谈不上开发效率,你连整个项目完整功能都做不出来!这也是一些3、4年phper越做越觉得自己开发慢、做不出来好东西的本质原因!you know? ==================================== 除此之外的功能还有安全性设计,GII代码生成器,开发者工具条,调试模式,Codeception调试器,Fixture数据定制器,Bootstrap扩展等等等等不胜枚举的特性,学习曲线本身不是问题,这些特性你不用也没关系,当原生PHP一样用也好用,但是学习曲线是和收益成正比的,用过你就放不下了。 ==================================== 毫无意义!偏离了php的本质初衷:简单、快捷、性能还行, 偏离了web本质:快速成型、快速响应变化, 偏离了大中小公司发展的方向!。 将一些安全处理也弄复杂、gii生成的模型没有啥用 和 控制器的curd一点都不好看和优美,我去! 还学习曲线和收益成正比呐?,产品不能快速开发出来,不好维护,招人难,有什么用? 那种2B说门槛高 php就能拿高薪,java4 跟php TMD也差不多, 手势向下。 ==================================== 功夫要下到,你不会不代表它不能,这么多企业用Yii,难道他们的CTO傻?
==================================== 难怪php不能开发大型应用!不从底层找原因, !我承认该框架思想是好的、符合象牙塔工程需!但总有一天会有一款比它更易用的框架取代! ====================================
bbjbepzz 2014-06-12
  • 打赏
  • 举报
回复
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还是有好的地方的,一个框架不可能让所有用的人都满意的,如果你觉得哪里不太好,你完全可以按自己的要求定制一下(注意后期框架的升级问题)
店长dfdfdsfs 2014-06-10
  • 打赏
  • 举报
回复
用Yii完成了2个项目了,正在做第三个,这次这个项目相对比较大,功能也较多。 前两个项目一次和别人合作,一次完全自己做的,自己做的一次是做一个票务系统,因为整体界面要求不高,我就没有找前端,全部自己写了。 现在感觉Yii的整体设计用起来真是舒服,本身基于组件的框架使其具有极高的定制性,就像楼上所说的,有很多功能你觉得不好纳尼完全可以不用,有很多替代方案,Yii只是给你多了一个选择,如果你觉得好像没什么替代方案只能说明对框架不够熟悉,个人感觉Yii还是值得钻研一下的
pklim101 2014-06-10
  • 打赏
  • 举报
回复
至于Chtml做表单ActiveForm,可用可不用。但是个人觉得yii最优秀的莫过于OOP和MVC,还有它的灵魂:随用随取,而并不是运行就把所有的类加载进来,这也是其效率所在了!也是很多企业要求YII的原因了。
shuguangf 2014-06-10
  • 打赏
  • 举报
回复
个人认为说的没任何道理,你说的几点只是框架提供的一个功能而已 1)文件结构凌乱:框架有强制你把action单独写出来么?完全可以写到 Controller 2)对视图的控制欲太强烈:和第一条一样,没人强制你用上这个功能,我自己做表单看情况是否启用ActiveForm,哪个方便用哪个 事实证明,正规的公司都是分工明确不会让美工去干前端人员切片的活,甚至让美工或前端去套程序,只有那些比较坑的网建公司、非正规公司才会这样去做,出一个人的薪水干几个工种的工作 框架只是一个提升工作效率的工具,看你怎么去用,不是让你把所有内置功能全部用上,不要被框架框住!
xuzuning 2014-06-10
  • 打赏
  • 举报
回复
没用过 Yii,也没打算用。表示没有就业压力 据说 Yii2.0 这能工作于 php 5.4 及以上了 所以模板中的 <?php echo 一律可简化为 <?=,而无需顾及 short_open_tag 的状态 楼主对 Yii 模板的批评,也就是对 Smarty 的批评,也就是对所有使用模板引擎将业务逻辑与视图分离的框架的批评,也就是对 MVC 这种设计模式的批评 姑且言之,姑妄听之 如果要在模板中引入控制流,那么与其象 Smarty 自创一套模板语言,还真不如象 Yii 这样直接使用 php 代码 至少是学习难度下降了,何况学会了 php ,吃饭也总算有着落了 我倒是期望有这样一个框架:他能将在 html 声明为客户端运行的php代码翻译成 js 代码。从而免去学 php 还要学习 js 的烦恼
jiangbai333 2014-06-10
  • 打赏
  • 举报
回复
效率比tp ci什么的高多了!
yiifans 2014-06-10
  • 打赏
  • 举报
回复
你这是只看到yii的缺点,没看到yii2的优点。任何框架都会有缺点。 1、yii最主要的精华是OOP。 这个是yii框架的整个功能的所在,也是是公司招聘的主要原因 2、就像楼上所说的yii提供了各种便捷的功能,所以开发速度快。 3、文件结构凌乱 这个完全是按照个人习惯来组织,你可以这样写 protected actions post CreateAction.php ReadAction.php controllers PostController.php 4、至于表单问题 这个要看个人需要,如果做的表单页面是中规中矩的,可以使用ActiveForm。 当然,你可以完全不用ActiveForm,自己写html来实现,ActiveForm只是给你提供了一种方便。
romber007 2014-06-10
  • 打赏
  • 举报
回复
yii对初学者来说确实有点复杂,不过用时间久了就能体会到好处了,它确实是个极优秀的框架。刚开始可能感觉不出来,等到后期维护的时候就能发觉,它真的是很方便,非常灵活,想怎么改就怎么改,哪怕需求变了,用它也可以快速完成。当然,前提是你得保证设计应该合理
qiansen1386 2014-06-10
  • 打赏
  • 举报
回复
欢迎了解 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傻?

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧