搜索
首页后端开发php教程【Yii】刚接触Yii谈一下对Yii框架的看法和感受 (Yii 1.1.x),该怎么解决

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

本帖最后由 default7 于 2014-06-10 00:57:13 编辑 之所以想到去弄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只是给你提供了一种方便。
                         
------解决方案--------------------
没用过 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混乱。
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
PHP电子邮件:分步发送指南PHP电子邮件:分步发送指南May 09, 2025 am 12:14 AM

phpisusedforsendendemailsduetoitsignegrationwithservermailservicesand andexternalsmtpproviders,自动化notifications andMarketingCampaigns.1)设置设置yourphpenvironcormentswironmentswithaweberswithawebserverserverserverandphp,确保themailfunctionisenabled.2)useabasicscruct

如何通过PHP发送电子邮件:示例和代码如何通过PHP发送电子邮件:示例和代码May 09, 2025 am 12:13 AM

发送电子邮件的最佳方法是使用PHPMailer库。1)使用mail()函数简单但不可靠,可能导致邮件进入垃圾邮件或无法送达。2)PHPMailer提供更好的控制和可靠性,支持HTML邮件、附件和SMTP认证。3)确保正确配置SMTP设置并使用加密(如STARTTLS或SSL/TLS)以增强安全性。4)对于大量邮件,考虑使用邮件队列系统来优化性能。

高级PHP电子邮件:自定义标题和功能高级PHP电子邮件:自定义标题和功能May 09, 2025 am 12:13 AM

CustomHeadersheadersandAdvancedFeaturesInphpeMailenHanceFunctionalityAndreliability.1)CustomHeadersheadersheadersaddmetadatatatatataatafortrackingandCategorization.2)htmlemailsallowformattingandttinganditive.3)attachmentscanmentscanmentscanbesmentscanbestmentscanbesentscanbesentingslibrarieslibrarieslibrariesliblarikelikephpmailer.4)smtppapapairatienticationaltication enterticationallimpr

使用PHP和SMTP发送电子邮件的指南使用PHP和SMTP发送电子邮件的指南May 09, 2025 am 12:06 AM

使用PHP和SMTP发送邮件可以通过PHPMailer库实现。1)安装并配置PHPMailer,2)设置SMTP服务器细节,3)定义邮件内容,4)发送邮件并处理错误。使用此方法可以确保邮件的可靠性和安全性。

使用PHP发送电子邮件的最佳方法是什么?使用PHP发送电子邮件的最佳方法是什么?May 08, 2025 am 12:21 AM

ThebestapproachforsendingemailsinPHPisusingthePHPMailerlibraryduetoitsreliability,featurerichness,andeaseofuse.PHPMailersupportsSMTP,providesdetailederrorhandling,allowssendingHTMLandplaintextemails,supportsattachments,andenhancessecurity.Foroptimalu

PHP中依赖注入的最佳实践PHP中依赖注入的最佳实践May 08, 2025 am 12:21 AM

使用依赖注入(DI)的原因是它促进了代码的松耦合、可测试性和可维护性。1)使用构造函数注入依赖,2)避免使用服务定位器,3)利用依赖注入容器管理依赖,4)通过注入依赖提高测试性,5)避免过度注入依赖,6)考虑DI对性能的影响。

PHP性能调整技巧和技巧PHP性能调整技巧和技巧May 08, 2025 am 12:20 AM

phperformancetuningiscialbecapeitenhancesspeedandeffice,whatevitalforwebapplications.1)cachingwithapcureduccureducesdatabaseloadprovesrovesponsemetimes.2)优化

PHP电子邮件安全性:发送电子邮件的最佳实践PHP电子邮件安全性:发送电子邮件的最佳实践May 08, 2025 am 12:16 AM

ThebestpracticesforsendingemailssecurelyinPHPinclude:1)UsingsecureconfigurationswithSMTPandSTARTTLSencryption,2)Validatingandsanitizinginputstopreventinjectionattacks,3)EncryptingsensitivedatawithinemailsusingOpenSSL,4)Properlyhandlingemailheaderstoa

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中