1

質問: 私が知る必要があるのは、別のデータベース (mongodb) を ATK4 に組み込むにはどうすればよいですか? 具体的には:

  1. データベースへの接続を作成し、すべてのモデルにクラッドを含めるか、ライブラリに抽象化する必要がありますか?
  2. モデルに抽象化すると、モデル内からメソッドを呼び出すにはどうすればよいでしょうか?

いくつかのメモ:

  1. .net では、明白な答えはそれを抽象化することです。これは、mongo と asp.net mvc を使用して自分のプロジェクトで行ったことがありますが、php に関してはまったく初心者なので、規則が何であるかわかりませんそれは。
  2. Code Igniter を使用すると、ライブラリを簡単にロードできます。ATK4 も同じ方法でしょうか?
  3. 私はすべてのドキュメントを読み、ベータ版ドキュメントの下のチュートリアルをざっと読みました。

私についてのいくつかのこと: 私は php の初心者です。私の主要なコーディング フレームワークは .NET (vb&c# (winforms と asp (webforms と mvc の両方)) の両方) です。

私は CodeIgniter で遊んでいて、とても気に入っています。私の同僚は私に ATK4 をチェックするように頼んだ。

ただし、プロジェクトに ATK4 を採用する場合は、MongoDB を使用できる必要があります。はっきりさせておきますが、私は誰かにコードを書いてもらいたいわけではありません。php と atk4 の規則に関するガイダンスが必要です。これらのことに関する Web サイトのドキュメントは、現時点では少しまばらです (存在しません)。

4

1 に答える 1

0

2つの選択肢があり、どちらも抽象化されています。まず、グリッドやその他のビューが自動的に認識するモデルとコントローラーの作成に関与します。次に、MongoDBからデータをフェッチし、静的テーブルに挿入する必要があります。

モンゴを意識したビュー

このアプローチでは、モデルがどのように動作するかを知っている必要があります。特に、MVCGrid、setController、setModel、およびmvc/Controller.phpを理解する必要があります。次に、独自のコントローラーを作成する必要があります。次に、MongoDBからデータをフェッチする方法を適切に認識しているコントローラーを使用するAbstractView :: setModel()のコピーが必要になります。

また、データを適切にストリーミングするには、おそらくグリッド(またはMVCGrid)を拡張する必要があります。

これが完了したら、次のことができます。

$ form-> setMongoModel('MyModel')-> loadData(123);

(GITバージョンを使用している場合は、実際にこのメソッドを挿入できます: https ://github.com/atk4/atk4-testsuite/blob/master/page/core.php#L108

半自動化されたアプローチ

このアプローチでは、MongoDBコントローラーからデータを自分でロードし、グリッドまたはフォームにフィードする必要があります。グリッドとフォームはどちらも静的データを適切に処理できます。この場合、次のようなものが必要になります。

$c=$this->add('MongoController');
$data=$c->load($my_model,123);
$grid->setStaticSource($data);

他の質問への回答

Code Igniterは優れたフレームワークですが、オブジェクトをグローバルにインスタンス化します。同じライブラリの2つのインスタンスが必要になる可能性はほとんどありません。アジャイルツールキットはそれを許可し、コントローラーはしばしばそのように使用されます。その結果、ATK4オブジェクトが相互にバインドしている間、CIでのデータ管理をほぼ担当します。これは、これらのライブラリのアプローチ間の主要な違いです。

CIのライブラリ:

$this->load->library('MyLib');

ATK4では次のようになります。

$this->api->add('MyLib');

配置するのが一般的な方法です

$this->owner->mylib=$this;

ライブラリ内にあるため、ライブラリに簡単にアクセスできます。

PHP開発がどのように行われるかを知らなくてもよいかもしれません。ほとんどの場合、PHPはHTMLテンプレートに非常に依存しています。

于 2011-07-25T14:56:21.373 に答える