2009-07-29 7 views
4

est-il possible d'avoir un vrai Model Model en PHP comme dans Ruby on Rails? Avec Zend Framework vous pouvez créer un modèle mais c'est une classe. Comme je sais que vous devez écrire toute la logique par moi-même.Zend Framework Model

Solutions?

+1

ZF suit le paradigme opposé de Rails, qui est, ZF est 'la configuration sur la convention' plutôt que le contraire. Beaucoup de choses sont laissées au développeur ... comme toute la couche du modèle. C'est pourquoi j'aime ça. – jason

+1

ancien thread Je sais - mais RoR (et beaucoup d'autres frameworks) ont infiltré le mythe que les classes Model mappent 1: 1 aux tables de données. Les classes de modèles sont principalement concernées par ... bien, la modélisation de quelque chose du monde réel dans le code. Les modèles ne sont pas principalement conçus pour être un moyen de persistance des données. Le modèle d'enregistrement actif privilégié par RoR brouille la distinction entre les modèles et les objets d'accès aux données et une grande partie de la communauté de développement Web pense qu'ils sont identiques. – sunwukung

+1

@sunwukung Il est vrai que les modèles et dbaccess ne sont pas destinés à être 1: 1, mais pour la * grande * majorité des applications web, la simplicité de les avoir fait gagner du temps et des maux de tête. Pour la plupart des applications Web, vous n'avez pas vraiment besoin de modèles représentant des objets du monde réel. Ce dont vous avez besoin, ce sont des modèles qui représentent des tables DB. La plupart des applications Web sont des clients légers entre un utilisateur et une base de données. –

Répondre

3

True, dans Zend Framework, vous devez déclarer des classes pour les tables de base de données auxquelles vous souhaitez accéder. Mais le reste peut être fait implicitement, si le comportement par défaut est suffisant. Ce qui suit est une classe de modèle valide et fonctionnelle (comparer à http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.introduction):

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

Cela devrait vous permettre d'accéder à la table nommée « bugs », par exemple:

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

Encore une fois, l'exemple a été prise directement de la documentation mentionnée ci-dessus.

2

Ou depuis 1.8.x il y a un modèle de DataMapper utilisé pour les modèles (voir QuickStart dans le manuel)

+0

Pas vraiment. Ceci n'est pas imposé par le framework. C'est toujours au développeur. – jason

+0

Je sais :) C'est juste mon mauvais anglais :) –