2009-08-24 10 views
13

Drupalモジュールのための最良のアプリケーションワークフローメタファーは何ですか? PHPフレームワークでは、MVCスタイルと考えています。私たちはDrupalの中でどのように考えますか?Drupalモジュールの内部作業のためのメタファー

私は、ショップ、カタログ、フォーラムのようなユーザ指向のモジュールをいくつか書いています。 私が理解する限り、MVCベースのモジュールはまったくまたはほとんどありません。 Drupalモジュールを(サブアプリケーションとして)フォームとハイパーリンクを介して接続された スクリーンの数として扱うべきですか、それとも良い方法がありますか?

私の質問はちょっと投機的かもしれませんが、私は誰かが私の の意図を "スクリプト"だけでなく共有することを願っています。

答えて

14

Presentation-abstraction-control(PAC)は、物事のDrupals一般的なアプローチを記述するパターンの最も近い一致のようですが、私は、これは、多かれ少なかれ、偶発的であると思います;)

の階層的な組織(多かれ少なかれ)独立したPACトリプレットは、一般的な屋根の下で多かれ少なかれ独立したエージェントであるDrupalモジュールに大まかにマッピングされ、3つの領域(View、Controller、Model/Abstraction)のすべてでその役割を果たします。情報の流れは、厳密にView<>Controller/Presenter<>Modelなるよう

Model-view-presenter

も、Drupalの中に見つけることができるいくつかの側面、特にビューはモデルから直接その内容を取らないことでMVCからの逸脱が、コントローラからを定義します。

しかし、Drupalでの懸念の分離は(まだ)非常に非公式であり、開発者のコ​​ーディング規律に大きく依存するため、常に完全に分解することの限界にありますテーマレイヤーへ、多かれ少なかれビューに)。

Drupalの成功の理由の1つとして、厳密に分離を強制するのではなく、非常に異なる背景を持つ幅広い人々が訓練を受けた開発者でなくても貢献できるということです。たとえば、PHPを少し知っているHTML/CSS Guyは、本格的なモジュールを実装することなく、テンプレート内から非常に多くの調整や機能を追加することができます。彼がしたことが一般的な関心事であれば、それは遅かれ早かれを進化させて、他の人がそれを拾うより公式の構造/モジュールに進化させます。欲求不満、趣味、初心者の開発者にとっても同じことです。何が起こっているのかを実際に理解することなく目標を達成することができるため、機能に対するアイデアは一般的な関心事を満たしていれば貢献に加わり、洗練されます。

これまでのところ、これは非常にうまく働いている - のDrupalのコアは、より正式ました(scriptish以下;)すべてのメジャーリリースではまだアドオンの追加のための柔軟性を維持しながら - これは、将来的にホールドアップするかどうかを見てみましょう...

3

drupalのモジュールは、特定の「イベント」がエンジンで発生したときに呼び出される関数のコレクション(drupalの「フック」の実装)として最もよく考えられます。それらは厳密にユーザーイベントではなく、ロードする段階(ノードをロードする前、ノードをロードした後など)、またはチェックする(エンジンがパーミッションをチェックしていますか、いくつか追加しますか? )。

実際には、フックはdrupal機能を拡張する関数なので、drupalが提供する動作に独自の動作を追加します。その後、Drupalは適切な時間にそれらのフックを呼び出して、自分の行動を実行できるようにします。

したがって、フォームやページとの緊密な接続はなく、MVCモデルなどとの関連はありません。バージョン6以降、drupalはオブジェクトベースではありません。

厳密にはDrupalの部分です。あなたのモジュールはこの上に構築されていますが、あなたが望むアーキテクチャを使用することができます。それはオブジェクト指向であり、MVCまたは他のパターンを使用することができます。

+2

次に、Drupalアプリは一般的なカテゴリとして、イベントベースのアプリケーションに似ています。 – AlexA

2

これは高レベルの質問ですが、私は刺すようにします。

Drupalはhere.

Drupalは、いくつかのobject orineted principalsにbassedさ良い概要があり、コンテンツの経営管理論のフレームワークです。 MVCによく似た懸念があります。 database abstraction layer、論理層はtheming systemです。

drupalモジュールをプログラミングするときは、hooksを1つ以上使用することをお勧めします。これにより、コードをdrupalシステムに緊密に統合することができます。 coreには多くの機能が組み込まれており、モジュールでその機能を活用できます。これらを使用すると、コードをより劇的にするだけでなく、書かなければならないコードが削減されます。

3

Drupalフックはリスナーと呼ばれ、ほとんどのOO言語ではObserversと呼ばれます。 彼らは技術的にそのパターンをフォローしましたが、ほとんどのオブジェクト指向言語や環境で磨きと成熟を期待しないでください。 Drupalsのフックは、使用が制限されているか、使用範囲が広すぎます。

リスナー、フックは、Drupalのすべてについての基本的なアーキテクチャの原則です。

関連する問題