2

MVC フレームワークを PHP と一緒に使用して、コードとプレゼンテーションを適切に分離したいと考えています。私は現在、CakePHPを見始めています。素敵に見えますが、これらすべての魔法の糸はどうですか?

以下のコードを見てください (CakePHP クックブックから引用):

class User extends AppModel {
    var $name = 'User';
    var $hasOne = 'Profile';
    var $hasMany = array(
        'Recipe' => array(
            'className'  => 'Recipe',
            'conditions' => array('Recipe.approved' => '1'),
            'order'      => 'Recipe.created DESC'
        )
    );
}

あの魔法の糸が気になる。コード内の文字列は、出力されるテキストのみであるべきです!

「Recipe.created DESC」に 1 つのスペルミスがあり、期待どおりに機能しません。ここで役立つインテリセンス/コード補完はありません!

また、「レシピ」を別のものに変更したい場合はどうすればよいですか?すべてのコードを手動で検索し、それが通常のテキストなのかマジック ストリングの 1 つなのかを調べる必要があります。

他の PHP MVC フレームワークは優れていますか? (読む: 魔法の糸が少ないかまったくない)

魔法の文字列を回避する方法に関するリンクはありますか (少なくとも可能な限り)...?

4

3 に答える 3

2

Cake は「Convention over Configuration」の方法論に従います。これは、CRUD ベースのアプリケーション (ほとんどの場合) を迅速にプロトタイプ化し、デプロイするために使用できるフレームワークです。舞台裏で多くの「魔法」が起こっているため、内部で何が起こっているのかわからない場合は、常に良い選択になるとは限りません.

あなたの特定の例に関しては、それほど悪くはありません。レシピは、実際にはモデルが関連しRecipeているモデルを参照します。UserCake には、いくつかのモデル変数を使用してモデルの関係を適切に設定する組み込みの ORM があります。これは、どの ORM フレームワークにも当てはまります。クラス名を変更しない限り、すべての参照を変更する必要はありません。これは、どの PHP コードでも当てはまります。

他のフレームワークの推奨事項について。フレームワークで作業を開始する前に、独自の PHP MVC スタックで作業することをお勧めします。PHP について十分に理解している場合は、CodeIgniterまたはKohonaフレームワークを見ることができます。これらは Cake よりも剛性が低いです。Zend Frameworkもご覧ください。さまざまな機能を備えたフレームワークが他にもたくさんあります (提供されるコントロールのバリエーションが多かれ少なかれ異なります)。

于 2012-01-02T15:46:42.293 に答える
0

あなたが探しているのは、良い ORM です。次のいずれかを使用してみてください。

ORM の詳細: http://en.wikipedia.org/wiki/Object-relational_mapping

于 2012-01-02T15:43:13.653 に答える
0

あなたがそこで何をしたかわかる

また、「レシピ」をリマネしたい場合は…

どの ORM ライブラリを選択しても、常に魔法の文字列が存在します。クラスをデータベース テーブルに自動的にマップするのに十分な情報がありません (最も単純な場合を除く)。マジック ストリングは、実際には、ORM がマッピングを作成するために必要なメタデータです。

定数を定義したり、パブリックな静的フィールドを作成したりすることで、マジック ストリングを回避しようとすることはできますが、最終的にはそれらをせいぜい 1 つのファイルに統合するだけです。

ORM を使用する場合、何があってもメタデータを提供する必要があります。そのことを念頭に置いて、最も快適に感じる ORM を選択する必要があります。

于 2012-01-02T16:09:30.897 に答える