2012-03-28 5 views
4

私はちょっと深いYiiを掘り下げながら、私はGiiとGiixを使ってモデルを生成し、 "admin" CRUDが時間を節約するツールではなく松葉杖かもしれないと思っています。小規模なプロジェクトの初めの段階では、多くの場合、データベース設計に専念できるようになり、より迅速に作業を進めることができます。しかし、テーブル構造やリレーションシップを変更するたびに、GiiXを使用してモデルを再生成する必要があります。私がそうする前に、私は書かれたモデルの部分を常にコピーして、後で更新されたモデルに貼り付けることができます。これはやるのが面倒なように思えますし、今実際の時間を節約しているのかどうか疑問に思っています。私はいくつかの質問があります:モデルとCRUDを生成するためにコード生成を引き続き使用する必要がありますか?

  1. Yiiユーザーの場合、一度Yiiをやっているとしばらくの間、GiiやGiiXを気にしますか?それはもはや役に立たなかったので、それを使って終了しましたか、それとも松葉杖だったのでしょうか?独自のコード生成ツールや足場ツールを作成していましたか?
  2. すべてのコーダーにとって、新しい言語やフレームワークを学ぶときにコード生成ツールを使用しないでください。

私の希望でもテーブル構造を複数回更新し、コピー&ペーストSANS、私自身のコードで書くと何が何を追跡した後、GII及びその他のコード生成ツールを使用するための効果的な方法があるということです。

あなたのご意見をお知らせください。

+0

私は3番目のYiiプロジェクトに入っています。最初の1つはGiiを2番目のGiixで使用しましたが、今はモデルを生成して参照用に別のフォルダに入れました。開発プロセス中にモデルを作成する必要があるときに、生成されたモデルからコードを取り出し、残りの部分を書きます。 – Puigcerber

答えて

4

Yiiで可能かどうかわかりませんが、別のフレームワークでモデルクラスを拡張し、カスタムコードを拡張クラスに追加します。このアプリでは、基本(生成)モデルクラスではなく、拡張クラスのみを参照します。

ベースモデルクラスにカスタムコードを入れないので、カスタムコードを上書きする心配なしに再生成できます。

+1

私はこの考えが好きです。これはおそらく、物をコピー&ペーストすることなく機能を保持する最も簡単な方法でしょう。 –

+0

私はこれに行って、振り返っていない。 BaseModelはGiiの変更で変更されますが、モデルは 'yii :: import()'だけを使用し、上に座ります。 –

7

Giiは、初期ボイラープレートコードとディレクトリ構造を生成するのに便利です。

プロジェクトが進むにつれて、Giiで提供されている差分を使用して、モデルクラスファイルに関連する新しいコードスニペットを追加します。テーブルを変更するとします。 Giiに行き、モデルを生成してみてください。モデルクラスファイルが存在することが通知されます。また、差分をポップアップで表示するリンクも表示されます。

+0

その素晴らしい、前にそれを使用したことはありません。すぐに試してみます:) +1 –

1

私は私のテーブル構造や関係、 に変更を加えるたびしかし、私は自分自身を再生成モデルにGiiXに頼ら見つけます。

本当に必要ありません。 Yiiデザインでは、すべてのテーブルフィールドをモデルの属性として使用できます。この方法で、TableAに新しいfieldXを追加すると、$ modelA-> fieldXを即座に使用することができます。お使いのモデルでにアップグレードする必要はありません。あなたがテーブルを変更したことをYiiは知っています。

を参照してください:。

「我々は明示的にポスト クラスのtitleプロパティを宣言することはありませんが、我々はまだタイトル がtbl_post表の列であるため、これは上記のコードでそれをアクセスすることができ、 CActiveRecordは、 をPHP __get()マジック メソッドの助けを借りてプロパティとしてアクセス可能にします。私たちは同じように 非既存の列にアクセスしようとすると、例外がスローされます「

出典:http://www.yiiframework.com/doc/guide/1.1/en/database.ar

For Yii users specifically, once you've been doing Yii for a while do you even bother with Gii or GiiX? Did you quit using it because it was no longer useful, or because it was a crutch? Did you work on writing your own code generation and scaffolding tools? 

私はほとんどのために私のプロジェクトのすべてでGIIを使用しますモデルやCRUDの生成を行うことができます。非常に便利です。私は自分の望むように生成されたコードをカスタマイズすることができます。私はGiiジェネレータの 'スケルトン'いくつかの方法/属性が必要です。

For all coders, do you feel code generation tools should be avoided when learning a new language or framework? 

いいえ、IMO。生成されたコードはもう一つの学習方法です。

+0

@property宣言は実際に何もしませんか? –

+0

@propertyは単なるphpDocです。これは、システムのドキュメント化、そしてIDEがコード補完の仕方を知る上で非常に便利です。 – slinstj

+0

OKですが、実際に何もしませんか?悲しいことに私にはニュースです...私はいつもバックグラウンドで魔法が起こっていると考えていました... –

関連する問題