【问题标题】:Zend Framework ModelZend 框架模型
【发布时间】:2010-11-15 01:33:51
【问题描述】:

是否可以像在 Ruby on Rails 中一样在 PHP 中拥有真正的模型层?使用 Zend 框架,您可以创建一个模型,但这是一个类。据我所知,您必须自己编写所有逻辑。

解决方案?

【问题讨论】:

  • ZF 遵循 Rails 的相反范式,即 ZF 是“配置优于约定”而不是相反。很多事情都留给了开发人员……就像整个模型层一样。这就是我喜欢它的原因。
  • 我知道的旧线程 - 但是 RoR(和许多其他框架)已经普遍存在模型类将 1:1 映射到数据表的神话。模型类主要关注......嗯,用代码对现实世界中的某些东西进行建模。模型的主要目的不是作为数据持久性的一种手段。 RoR 青睐的 Active Record 模式模糊了模型和数据访问对象之间的区别,因此许多 Web 开发社区认为它们是一回事。
  • @sunwukung 确实,模型和 dbaccess 并不是要达到 1:1,但对于 广大 大多数 Web 应用程序来说,拥有它们的简单性因此可以节省时间和头痛。对于大多数 Web 应用程序,您实际上并不需要代表真实世界对象的模型。您需要的是代表数据库表的模型。大多数 Web 应用程序都是用户和数据库之间的瘦客户端。
  • 我知道这是一个老问题,但如果您仍在寻找类似 PHP 的 Rails 框架,请查看 CakePHP。当你问这个问题时,我不知道他们是否真的在附近。

标签: model-view-controller zend-framework model


【解决方案1】:

没错,在 Zend Framework 中,您需要为要访问的数据库表声明类。但如果默认行为足够,其余的可以隐式完成。以下是一个有效的功能模型类(与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
}

这应该可以让您访问名为“bugs”的表,例如:

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

同样,该示例直接取自上述文档。

【讨论】:

    【解决方案2】:

    或者从 1.8.x 开始,有一个用于模型的 DataMapper 模式(参见手册中的快速入门)

    【讨论】:

    • 并非如此。框架不会以任何方式强制执行此操作。这仍然取决于开发人员。
    • 我知道 :) 只是我的英语不好 :)
    【解决方案3】:

    我编写了一个可能适合您需求的脚本。

    http://code.google.com/p/zend-db-model-generator/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-22
      • 2012-03-06
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 2013-02-11
      相关资源
      最近更新 更多