zend框架2模型/适配器可重用

时间:2012-11-05 15:30:45

标签: php zend-framework2 zend-framework-modules

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

例如,我有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()
    {
        //..
    }
}

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

2 个答案:

答案 0 :(得分:0)

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

然而,回到你的问题:你可以简单地将模型A中的那些类包含到模型B中,例如use Blog\Model\BlogTable

最终,虽然我认为模块的管理是博客模块本身的责任,正如第一段所暗示的那样。

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

答案 1 :(得分:0)

您可以通过提供基础/共享模块来实现这一目标,该模块提供各种模型,助手等。

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