のような 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は特定のルールに基づいて設計されており、従うと大きなメリットが得られます
理解を深めるために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 やモバイル アプリに同じモデル関数を簡単に使用できます)、コードの再利用性など。
注:これは包括的ではありません。これは単にアイデアを提供するためのものです。さまざまな設計パターンの長所と短所の完全なリストは、多くの本を埋めることができます