コンセプト
Rapydをロードする
RapydはCI(CodeIgniter)のライブラリです。
Rapydを使用する場合、CIロードクラスを使用し、ライブラリをロードする必要があります。(ライブラリの場所はコントローラやモデル等任意の場所です)
注記:これはコンストラクタ中のライブラリをロードしなければならないというわけではありません、あなたが決めることができます。また、CIベースオブジェクトの中に、基本的な機能と、メインRapydオブジェクトが含まれています。
参照:
$this->rapyd
クラスをロードする
コンポーネント/クラスをCIロードライブラリでload()を使用しロードすることができます。また、マルチプルアーギュメントを使用することで、一度に一個以上のクラスをロードすることができます。
クラスインスタンシング
CIとは似ていないようですが、Rapydはロードしたクラスをインスタンスしません。
Rapydのクラスロードはシンプルでクラスファイルを包含しています。
だから、あなたは普通にRapydクラスをインスタントする必要があります。
コンポーネントの出力
build()メソッドはもっとも共通化されたRapydクラスのメソッドです。
これは、処理を実行し構築/修復を出力するプロパティです。$component->output
多くのコンポーネントがJavascript/CSSインクルージョンズを改造する必要があり、出力プロパティのみではたりません。
$this->rapyd->get_head()は必要なHTMLインクルージョンズ(すべてのインスタンス度コンポーネントに)を返します。そして、あなたはビューヘッド$varを簡単に実装できます。
データソース
RapydコンポーネントはCIアクティブレコードライブラリで動作します。しかし、いくつかの連結配列コンポーネントもまたサポートしています(機能制限つき)。
0.9.8より新しいバージョンについて:
すべてのデータコンポーネンツは独立したCIアクティブレコードオブジェクトインスタンスを参照して動作します。また、異なる接続グループもサポートします。
これは、RapydコンポーネンツがCIデフォルトAR($this->db)を使っているというだけでなく、独立しているが、Rapyd グローばるオブジェクトである$this->dbにより共有化されているということです。つまり、新しいRapydARはインターナルコンポーネンツのdbオブジェクト($grid->db for example)に何の変更を加えることなく,コンポーネンツをロードする前に、エクスターナル AR動作方法を変更します。 (CI AR $this->db and now $this->rapyd->db)このサンプルコードは新旧2種類の動作方法を表しています。
主な変更点はRapyd ARは、最初のコンポーネンツがコード中でロードされたが、それ以前にはロードされたことが無かった場合、自動的にロードすることです。このことは、CI ARがデータベース読み込み時毎回ロードされるという以前のバージョンと比較されます。
Rapydと新ARは現在、異なる接続グループをサポートしており、CI標準ファイルだけでなく、貴方のデータベースconfigファイルからもよみこむ。新Rapyd Config varと新RapydプロパティはRapydグローバルオブジェクトが異なるデータベース接続下で実行されるのを許可する。これは、CI標準のそれやランタイムが変更されているより優先される。
この新Rapyd AR機構により私達はドロップダウンフィールドを異なるデータベースに接続する能力を追加し、このことはデータベース接続のデータフォームやデータ編集より優先される。この方法であるドロップドウオプションリストは外部データコンテントで構築される(ドロップダウンフィールドドキュメント参照)。
基本的に、コンポーネント(セット、グリッド、テーブル)の「データ」は以下のソースのような場合である:
- a NULL value (意味: 「現在のRapyd Active Recordオブジェクトを使用するか、または現在ロードされたコンポーネントがロードされた1番目であるならそれをロードしてください」)
- (文字列)テーブル名(意味:このテーブルの全レコードを使用)
- sqlクエリ (SELECT,部分的な SELECTクエリ)
- 多次元の結合しやすい配列(DataGridとDataTableによってサポートされるもののみ)
重要: 最後のサンプルはCI ARの最小シンタックスによるコンプレックスクエリ(joins..where..etc)の実行方法を提案したものです。
新Rapydデータの接続機能:
新しいload_db()メソッドを追加しました。これは、Rapydライブラリがset_connection()メソッドをもっているということです。この新機能は新Rapyd Config var $rpd['data_conn']=''; であり、あなたはCIデフォルトではない違う接続グループのRapydデフォルトARに接続するよう設定できます。
注記: 全接続グループでCI databese.php configファイルの設定をしてRapydと共に使う必要がある。Rapyd接続機能は接続グループへの配列定義をサポートしていない。これに対してCIデータベース接続はサポートしている。
全Rapydコンポーネンツはデータベースオブジェクト機能を含む。その機能とは、もしあなたが一つ以上のコンポーネントを使ったら、それらは異なるデータベースへ接続できるものである。
標準Rapyd configファイルによりRapyd AR接続グループを標準CI接続グループとして設定することができる。
もし現在のRapyd接続グループがCI標準のものと異なる場合、あなたは空文字列を接続グループ名として使用し($this->rapyd->set_connection(''); )RapydをCI標準接続グループへ接続する。
もし現在のRapyd接続グループがRapyd標準のものと異なる場合、あなたはnull値を接続グループ名としたり($this->rapyd->set_connection(null);)空文字列としたりして($this->rapyd->set_connection();)逆にRapydを標準接続グループにとして接続することができます。なぜなら、それが標準動作なのです。
重要: 独立ARと切替接続は分離することができるという特徴があり、Rapyd ARがCIデフォルト接続グループに接続されていたとしても、Rapyd ARは常にCI ARの独立したものです。この場合$this->dbや $this->rapyd->db は異なるデータベースオブジェクトであり、いくつかの接続設定を使用します。
重要:Rapyd接続を切り替える度、Rapyd ARはコンポーネントが次にロードしたすべてが新しい接続を使用するのを確信しているunsetです。したがって、ある条件下では手動で再読み込みする必要があります。
機能/フィールドパターン
これはRapydに対する最高のアプローチのひとつです。 なぜなら、MVC規約でないだけでなく、簡単に簡潔なコードを書き、メンテナンスすることができるからです。
The pattern concept is: in many components, you can (in some cases you "must") pass a "field pattern" instead a "field name"
フィールドパターンはフォーマットアウトプットをPHPの機能により(ビルトイン、ユーザ定義、メソッドコールバック)一つ以上のフィールドと連結させる等、同時に行います。 パターン例:
ご覧のとおり、グリッドアウトプットはコントローラー/モデルから完璧に管理されています。イテレートやビューでHTMLを構築する必要はありません。
コールバック機能はカラムを簡単にしてくれます。
Each function you want to use must be declared by use_function method.
In application/config/rapyd.php you can setup an array of allowed functions.
"use_function" is needed for security and performance reasons.