4

Yiiをもう少し深く掘り下げていくと、モデルの生成にGiiとGiixを使用するのではないかと思います。「管理」CRUDは、時間節約ツールではなく松葉杖かもしれません。小さなプロジェクトの初期段階で何度も、それは私がより迅速に進むのを助け、データベース設計に集中することを可能にします。ただし、テーブルの構造やリレーションを変更するたびに、モデルを再生成するためにGiiXに依存する必要があります。その前に、作成したモデルのパーツを常にコピーして、後で更新されたモデルに貼り付けることができるようにします。これは退屈なことのように思えますが、実際の時間を節約できるかどうか疑問に思っています。少し質問があります:

  1. 特にYiiユーザーの場合、Yiiをしばらくやっていると、GiiやGiiXに悩まされることはありますか?役に立たなくなったのか、松葉杖だったので、使用をやめましたか?独自のコード生成およびスキャフォールディングツールの作成に取り組みましたか?
  2. すべてのコーダーにとって、新しい言語やフレームワークを学ぶときは、コード生成ツールを避けるべきだと思いますか?

私の望みは、テーブル構造を複数回更新し、自分のコードを書き込んだ後でも、Giiやその他のコード生成ツールを効果的に使用する方法があり、コピーと貼り付けがなく、何が何であるかを追跡することです。

あなたの考えを教えてください!

4

3 に答える 3

7

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

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

于 2012-03-28T05:34:31.287 に答える
4

Yiiで可能かどうかはわかりませんが、私が使用している別のフレームワークでは、モデルクラスを拡張し、カスタムコードをそれらの拡張クラスに配置します。アプリでは、拡張クラスのみを参照し、基本(生成された)モデルクラスは参照しません。

基本モデルクラスにカスタムコードを配置しないため、カスタムコードを上書きすることを心配せずに再生成できます。

于 2012-03-28T04:25:44.253 に答える
1

ただし、テーブルの構造やリレーションを変更するたびに、モデルを再生成するためにGiiXに依存する必要があります。

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

見る:

「Postクラスでtitleプロパティを明示的に宣言することはありませんが、上記のコードでアクセスできます。これは、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?

ほとんどのモデルまたはCRUD生成のすべてのプロジェクトで、Giiを使用しています。とても便利です。生成されたコードを好きなようにカスタマイズできます。私はGiiジェネレーターの「スケルトン」にいくつかのカスタマイズを行ったので、生成されたコードは英語ではなく私の言語であり、いくつかのメソッド/属性を使用するとさらに必要になります。

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

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

于 2012-03-28T05:35:12.013 に答える