3

调用 Yii 小部件是否被认为是不好的做法,例如

$this->widget('application.extensions.qrcode.QRCodeGenerator', array(
    'data' => $this->data,
    'subfolderVar' => true,
    'matrixPointSize' => 5,
));

从组件或模型中?如果是,为什么会这样?

4

1 回答 1

6

在控制器/模型等中调用小部件是不好的做法,因为小部件是视图对象;

这违反了 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 或移动应用程序)、代码可重用性等;

注意这并不全面,这只是给你一个想法;不同设计模式的优缺点的完整列表可以写很多书

于 2014-05-12T15:25:08.157 回答