@
dvaknheo 一:
<?php
// ...
echo Alert::widget()
//..
?>
我个人会选择
<?=Alert::widget(['class'=>'my-custom'])?>
更加灵活,而不是从控制器传入,
框架的核心有一条是逻辑分离,减少大脑负载,
yii model 负责规则配置、数据操作,
控制器负责接收请求、组装数据,
视图负责展示,
如果采用控制器传入,那么就不是在视图定制了,而是在控制器定制界面,
如果你连这条不清楚,
那么你的框架我非常不看好,
而且会劝别人不要用,
因为大家会找不到这个界面的代码写在哪里,
我是不会去维护这样的代码的。
二:
action="<?= $urlGenerator->generate('site/contact') ?>"
Url::to(['site/contract'])方法是可以用的。
三:
其实最希望的是 View 里 一个命名空间都不用,代码简洁得多。
前面有提到视图负责展示逻辑,你记住这句就可以了,只要没有脱离这个本质,再多命名空间,那么代码也是清晰和直白的。
代码的清晰条理性重要性很重要,你说的 view 一个命名空间不用,Yii 至少有 5 种选择:
1,将展示逻辑放在控制器;(展示逻辑不分离,不推荐)
2,隐式引用;(没有代码提示,不好 DEBUG,不直观,不推荐)
3,模板引擎;(个人认为 php 本身就是最好的模板引擎,不推荐)
4,采用 ajax ;(这个可以);
5,调用 rest 接口;(这个也可以)
你有第六种办法,还是用了其中一种?
四:
配置 rule VS 手动 debug
rule 可以自动生成(gii),改好 rule 就会错误提示一致,不会出 bug,不需要 debug 了,所以这就是自动驾驶,你现在和我说手动挡好?
五:
安全
比如内置了 jwt,rules 验证,cookie 加密,防注入等等,这些基本是目前框架标配吧。
你感觉不到,因为你看的是普通模板,不是高级模板,普通模板是隐藏了这些的,不表示它不存在,且你没有看官方文档,直接上手一个 demo 了。
比如需要配置 cookieValidationKey 你知道是做什么用的吗?
比如为什么配置文件要分为 local 和非 local ?
environments 里面的 prod 和 dev 又是做什么用的?
六:
有没有默认配置,让我的 业务工程看起来简单。
https://www.yiiframework.com/ 首页 5 个步骤第一个步骤:安装 composer,下载标准模板,运行 yii serve 。
三行命令项目都跑起来了,进入开发了,你说没有默认配置?
七:
比如模拟某个人操作,没必要用 curl 模拟从他登录开始吧。
拿到 uid,直接调用 service 业务层就行了。
Model 还可以用,Console 也可以用,其他都可以用,不必重复,
Yii3 最大的不同和目的就是将 jq,bt 等前端框架从核心中分离出来。
至于这个 demo 你可以看成秀技术的,Yii 其实一直都是紧跟 PHP 版本的。
八:
php7.4 预加载,解决了一部分性能问题。但是并没有完全解决
还是请举出一个除了不能常驻内存之外的性能问题例子出来,不能说空话啊,写程序的不能空对空,得摆事实。
九:
一个请求过来,框架的 hello world 要比纯 php 的 helloworld 跑多出很多 php 代码。
现实是大家都用框架,WHY ?
都是大牛们为了优雅好玩的?
大牛们都傻?
老板也傻?
层次不同而已,你看到的是自己写得爽,对其他任来说是团队合作有一套默契的规范,能够高效解决问题。
十:
为了追求性能和模式,所谓 [WEB] 高手们抛下了 PHP 改用 go 、java 、c#,留下一个所谓“优雅”的 PHP 开发氛围。
你还是可以不用框架啊,而且你还是可以自己写一个框架啊,所以有什么好说的。
环境变了,
你以为 PHP 还是嵌入 html 中用,
其实已经经历过我前面提到过的 cake,zend,yii,laravel 多个时代了,
现在即将进入云原生时代了,
你期望 PHP 什么都能解决,
我只期望它做好 Web 即可,
至少现在开发一个人人商城,微擎这样的软件,我找不到更好的语言,
至于其他,至少我还会 Python,node,go,还在学习 C++和 C#,哪个适合我就用哪个,有什么好纠结的。
建议先看完官方手册,以及下载官方推荐的几个开源项目下来用用,然后自己动手写一个商业项目,想想这个框架适合场景,再来评价框架好坏更好。
当然还需要看下软件工程,软件思想的书籍。
知道你想骗我,想多从我这里掏点东西,自己快速学走捷径,先满足你吧。
然后有一天你会明白“欲速则不达”的道理。