Yii组件中调用的小部件

3
调用 Yii widget(例如)是否被视为不良做法?
$this->widget('application.extensions.qrcode.QRCodeGenerator', array(
    'data' => $this->data,
    'subfolderVar' => true,
    'matrixPointSize' => 5,
));

在组件或模型内部使用吗?如果是,为什么这样做?

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/frontend和应用程序员可以独立工作。设计师只需考虑如何呈现数据而不必考虑数据来自何处(即设计和使用小部件),应用程序员只需考虑业务逻辑而不必担心如何呈现它。
当您在模型中混合视图对象时,这种分离就会被破坏。
保持这种分离还有许多其他优点,包括更容易调试(您知道在哪里),更简单的测试(单位更小、更简单),更好的项目管理(不同团队在不破坏彼此工作的情况下处理应用程序的不同部分),松散的耦合性(例如,我可以轻松地为API或移动应用程序使用相同的模型功能),代码可重用性等。

注意 这并不全面,只是为了让你有个概念;不同设计模式的优缺点的完整列表可能需要填写很多书


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接