2009-07-29 14 views
4

Ruby on Railsのように、PHPで真のModel Layerを使用することは可能でしょうか? Zend Frameworkでは、モデルを作成できますが、これはクラスです。私が知っているように、あなたは自分ですべての論理を書く必要があります。Zend Framework Model

ソリューション?

+1

ZFはつまり、ZFは「大会以上の構成」のではなく、反対である、Railsのの反対のパラダイムに従っています。多くは、モデル層全体のように、開発者に任せられます。これが私が好きな理由です。 – jason

+1

古いスレッド私は知っていますが、RoR(および他の多くのフレームワーク)は、モデルクラスが1:1をデータテーブルにマッピングするという神話に浸透してきました。モデルクラスは主に...実際のコードから何かをモデリングすることに関係しています。モデルは、主にデータ永続性の手段となるものではありません。 RoRが好んでいるアクティブレコードパターンは、モデルとデータアクセスオブジェクトの区別を曖昧にしており、Web開発コミュニティの多くは、それらが同一であると信じています。 – sunwukung

+1

@sunwukungモデルとdbaccessは1:1であることは意図されていませんが、大多数のWebアプリケーションでは、その単純さが時間と頭痛を軽減します。ほとんどのWebアプリケーションでは、実世界のオブジェクトを表すモデルは実際には必要ありません。 DBテーブルを表すモデルが必要です。ほとんどのWebアプリケーションは、ユーザーとDBの間のシンクライアントです。 –

答えて

3

実際、Zend Frameworkでは、アクセスしたいデータベーステーブルのクラスを宣言する必要があります。しかし、デフォルトの動作が十分であれば、残りは暗黙的に行うことができます。これは、例えば、あなたが「バグ」という名前のテーブルにアクセスできなければならない

class bugs extends Zend_Db_Table_Abstract 
{ 
    // table name matches class name 
} 

$table = new bugs(); 
$data = array(
    'created_on'  => '2007-03-22', 
    'bug_description' => 'Something wrong', 
    'bug_status'  => 'NEW' 
); 
$table->insert($data); 

ここでも、一例を直接撮影された次は、有効かつ機能的なモデルクラス(http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.introductionと比較)であります上記のドキュメントから。

2

かは1.8.x以降のモデルに使用DataMapperのパターンがある(マニュアルのクイックスタートを参照してください)

+0

実際にはありません。これはフレームワークによっては決して強制されません。それはまだ開発者次第です。 – jason

+0

私は知っている:)それはちょうど私の悪い英語です:) –