XMLDB 分割 datalib.php (Dev docs)

提供:MoodleDocs
移動先:案内検索

XMLDB ドキュメンテーション > ロードマップ > 分割 datalib.php


この点の主な目的は、Moodle の DML 関数を1つのライブラリに、DDL 関数を別のライブラリに分離することです。このポイントは、他のポイントより先に実行する必要があります。これは、他のすべてを変更する前に、すべてを整えておくためです。

現在、lib/datalib.phpには 94 の関数が定義されていますが、そのほとんど (50) はDML や DDL 文とは直接関係なく、よく使われる DB トランザクション (関数 と呼ぶことにしましょう)に関係するものです。残り (44) は、DBへのアクセスに使用される コア 関数 (汎用的で、どのスクリプトでも使用でき、どのテーブル情報にもアクセスできる) です (データ処理 - DML - に使用する関数 42 とオブジェクト処理 - DDLに使用する関数 2 があります) 。

XMLDB スキーマの採用により、DDL 関数の数は現在の限界を超え、DB オブジェクトに対するあらゆる操作を共通の方法で実行できる関数群を持つことになります。テーブル、フィールド、インデックス、制約を作成・変更・削除する関数が必要になります。

これらの DDL 関数はすべてインストール時やアップグレード時にのみ使用されるので、新しいライブラリ (ddllib.php) にまとめて、必要なときだけ取り込むようにするとよいでしょう。

また、44の コア 関数と他の50の 機能的 な関数を分離し、すべてを独自のライブラリに分離することができれば素晴らしいことです。

これらの変化には、2つのアプローチがあるようです:

  • 2つの新しいライブラリ(ddllib.phpとdmllib.php)を作成し、datalib.php は機能的な 関数 のために 残しておきます 。datalib と dmllib の両方を常にインクルードし、ddllibは必要なときだけという、シンプルで明快なものです。1.7 リリース後、残りの関数を他のライブラリ (course/lib.php, user/lib.php...) に移動することによって、datalib.php を減らすことができます。それまでは、私たちは各リクエストに対して90の関数をすべて含むので、メモリ/プロセス要件は高いままです(1.6より高くはない)。そして、いくつかの機能は、その 自然な 場所から外れます(つまり、もう少し乱れます)。このソリューションは、すべてが自動的に利用可能であり続けるため、他社製モジュールと100%互換性があります。
  • 1つの新しいライブラリ (dddlib.php)を作成し、datalib.php をコア関数用に残し、機能的な 関数他のライブラリ移動 させます。この代替案は、すべての動作を継続させるために多くのスクリプトを変更しなければならないので、より 急進的 ですが、すべての関数は正しい位置で終了します。必要な 機能的な 機能のみを搭載するため、メモリやプロセスの要件が低くなります。一部の機能が自動的に使用できなくなるため、他社製モジュールとの互換性はありません

両方の選択肢を分析した結果、私は、1番目の選択肢がより良く 、より過激でなく、私たちとサードパーティの開発者に、後ですべてをスムーズにアップグレードする時間を提供できると思います (Moodle 2.0 は、すべての 機能的な 機能を最後の場所に移動する良いタイミングかもしれません) 。

すべての作業は1つのブランチで行い、それを MOODLE_17_DB_LIBRARIES と呼び、ポイント 2: DML 関数の変更 を始める前にHEADにマージしてください。

詳細

  1. MOODLE_17_DB_LIBRARIES ブランチを作成します。
  2. 新しい dmllib.php ライブラリを作成し、すべてのDML 関数datalib.php から移動して存在させます。
  3. setup.phpでは、必ずその関数を require_once() してください。
  4. すべての DDL 関数が存在する新しい ddllib.php ライブラリを作成し、datalib.php からそれらを移動させます。
  5. require_once() インストール/アップグレードのコード (admin/index.php) に、新しい ddllib.php ライブラリを追加します。
  6. インストール/アップグレードのプロセスをテストします。
  7. MOODLE_17_DB_LIBRARIES を HEAD にマージして戻します。

タイムフレーム

  • 2日かけて、すべての DDL と DML 関数を文書化します。
  • 1日でテストし、通常操作と install-upgrade の両方が正常に動作し続けることを確認します。

トータル: 3日間