3

のような Yii ウィジェットを呼び出すことは悪い習慣と見なされますか?

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

コンポーネントまたはモデル内から? はいの場合、なぜそうですか?

4

1 に答える 1

6

ウィジェットはビュー オブジェクトであるため、コントローラー/モデルなどでウィジェットを呼び出すことはお勧めできません。

これは MVC の原則に反しています。MVCは特定のルールに基づいて設計されており、従うと大きなメリットが得られます

理解を深めるためにMVCをどのように実装したかについての Yii 自身の説明を読んでください。

簡単に言えば、Yii は MVC フレームワークです。3層アーキテクチャを持つ

**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

3 つの異なるレイヤーを使用する目的は、関心の分離 (Soc)と呼ばれる設計コンセプトです。

簡単に言えば、基本的に、デザイナー/UI/UX/フロントエンドとアプリケーション プログラマーは、関心が分かれていれば、互いに独立して作業できます。デザイナーは、データがどのように、またはどこから来たかではなく、どのようにレンダリングされるかを心配する必要があります (つまり、ウィジェットのデザインと使用)。

モデルにビュー オブジェクトを混在させると、これが壊れます。

この分離を維持することには、他にも多くの利点があります。たとえば、デバッグが容易になる (何がどこにあるかがわかります)、テストが単純になる (ユニットが小さくて単純になる)、プロジェクト管理が改善される (さまざまなチームが互いの作業を中断することなく、アプリケーションのさまざまな部分で作業する)、緩くなるなどです。カップリング (たとえば、API やモバイル アプリに同じモデル関数を簡単に使用できます)、コードの再利用性など。

注:これは包括的ではありません。これは単にアイデアを提供するためのものです。さまざまな設計パターンの長所と短所の完全なリストは、多くの本を埋めることができます

于 2014-05-12T15:25:08.157 に答える