Magic3では、構成部品であるフレームワーク?、ウィジェット、テンプレート?の3つが、非常に単純なインターフェイスで
結びついています。(Magic3のしくみ?)
単純なインターフェイスで結合することで、構成部品を動的に自由自在に組み合わせることが可能になります。
Magic3の強力な拡張性や柔軟性は、構成部品の自由な組み合わせを動的に制御する仕組みから生まれます。
ここでは、Magic3の画面生成方法から、フレームワークの役割とウィジェット、テンプレート?の結びつき方をよりプログラム的に説明していきます。
Magic3では、画面を動的に生成する方法として、Web画面を視覚的に矩形で区切った単位をウィジェットという名前のコンポーネント部品とし、
「福笑い」のようにウィジェットを切り貼り的にレイアウト可能とすることによって、自由自在に画面が構築できます。
この仕組みを実現するために、Magic3では画面定義テーブルと、画面マネージメントの仕組みを内包しています。
ウィジェットを単体でみたとき、ウィジェット自体は、index.phpで起動され単にテキストを出力するだけのプログラムです。
以下の図のように、ウィジェットごとにディレクトリに分けられ、それぞれのディレクトリにindex.phpから始まるプログラムが格納されています。
(Magic3全体のディレクトリ構成)
個々のウィジェットは、完全に独立して存在します。互いに依存性はありません。
出力するために必要とする資源に関しては、個々のウィジェットの自由になっています。
DBからデータを取得してもかまいませんし、まったくDBにアクセスしなくてもかまいません。
Magic3フレームワークからは、個々のウィジェットのindex.phpを起動し、その出力を取得するだけです。
ウィジェットが「福笑い」の目や鼻などの部品とすると、土台となるのっぺらぼうの顔の輪郭の絵にあたるものが、デザインテンプレートです。
デザインテンプレートの土台の上にウィジェットを配置していくことで、Web画面を構成します。
デザインテンプレートは、HTML,CSS,画像等で生成され、サイトの基本デザインを形成するものですが、
以下の図のように任意の文字列で位置を示すタグが含まれています。タグ名と画面上の実際の位置は自由に定義します。
上記のように、単にHTMLを吐き出すだけのプログラムであるウィジェットと、埋め込み位置を示すタグを埋め込んだHTML
であるテンプレートの組み合わせを管理し、出力する仕組みがMagic3の画面生成の中核です。
画面構成を管理するDBには、タグ名とウィジェット名の対応マッピングが格納されています。
Magic3フレームワークは、画面生成時にこのマッピングテーブルの対応を読み込み、テンプレートにウィジェットの出力を埋め込んでいきます。
埋め込み方法は、タグポジションに関連したウィジェットをインデックス順に起動し、出力を埋め込むといった単純な仕組みです。