调用 Yii 小部件是否被认为是不好的做法,例如
$this->widget('application.extensions.qrcode.QRCodeGenerator', array(
'data' => $this->data,
'subfolderVar' => true,
'matrixPointSize' => 5,
));
从组件或模型中?如果是,为什么会这样?
调用 Yii 小部件是否被认为是不好的做法,例如
$this->widget('application.extensions.qrcode.QRCodeGenerator', array(
'data' => $this->data,
'subfolderVar' => true,
'matrixPointSize' => 5,
));
从组件或模型中?如果是,为什么会这样?
在控制器/模型等中调用小部件是不好的做法,因为小部件是视图对象;
这违反了 MVC 原则。MVC是根据某些规则设计的,如果遵循它会带来显着的好处
阅读 Yii 自己对他们如何实现 MVC的解释以更好地理解
简单来说,Yii 是一个 MVC 框架;具有三层架构,其中
**Model** layer represents consists of application data, business rules, logic and functions
**view** layer represents any output representation of information such a widget
**Controller** layer accepts input and converts it to commands for the model or view
使用三个不同层的目的是称为关注点分离 (Soc) 的设计概念。
通俗地说,如果关注点分开,设计师/UI/UX/前端和应用程序程序员可以彼此独立工作。设计者需要担心数据是如何呈现的,而不是如何或从哪里来的(即设计和使用小部件),应用程序程序员只需要考虑业务逻辑而不用担心它需要如何呈现
当您在模型中混合视图对象时,这会被破坏。
保持这种分离还有许多其他优点,包括更容易调试(你知道什么是)更简单的测试(单元更小更简单),更好的项目管理(不同的团队在应用程序的不同部分工作,而不会破坏彼此的工作),更松散耦合(例如,我可以轻松地将相同的模型函数用于 API 或移动应用程序)、代码可重用性等;
注意这并不全面,这只是给你一个想法;不同设计模式的优缺点的完整列表可以写很多书