0

我有一个由两个模块使用的模型。我不想将该模型的代码复制到每个模块中。

例如,我有 2 个模块。首先从模型中获取博客文章并为普通用户打印它们,另一个为管理员用户打印它们,但有更多选项(在视图中设置)。我会在两个地方有相同的模型。而且..这很糟糕。

只是一段代码:

<?php
namespace Blog\Model;
use Zend\Db\Adapter\Adapter;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\AbstractTableGateway;
class BlogTable extends AbstractTableGateway
{
    protected $table = 'blog_posts';
    public function __construct(Adapter $adapter)
    {
        $this->adapter = $adapter;
        $this->initialize();
    }
    /**
     * Gets the blog post list
     *
     * @return array
     **/
    public function fetchAll()
    {
        //..
    }
}

那么,我应该如何设计这个应用程序呢?

4

2 回答 2

0

最大的问题可能是为什么您将管理方面与“博客范围”分开。管理模块应该只是收集所有后端选项的前端(如果这有意义的话)

但是,回到您的问题:您可以简单地将模型 A 中的这些类包含到模型 B 中,例如use Blog\Model\BlogTable

最终,尽管我将模块的管理视为博客模块本身的责任,正如第一段所暗示的那样。

编辑:我忘了提一件事。理想情况下,如果您决定采用依赖方法,您的模块应该使 BlogTable 可以通过服务访问。这样,您的 ModuleAdmin 只需执行类似$serviceLocator->get('my-blog-table')更干净的方法。

于 2012-11-05T15:38:32.447 回答
0

您可以通过拥有一个提供各种模型、助手等的基本/共享模块来实现这一点。

但就我个人而言,我希望围绕功能而不是用户访问级别来构建模块。

于 2012-11-05T18:13:41.460 回答