我有一个模型,由两个模块使用。我不想将该模型的代码复制到每个模块中。
例如,我有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()
{
//..
}
}
那么,我该如何设计这个应用程序?
答案 0 :(得分:0)
最大的问题可能是您将“博客范围”之外的行政方面分开的原因。管理模块应该只是收集所有后端选项的前端(如果有意义的话)
然而,回到你的问题:你可以简单地将模型A中的那些类包含到模型B中,例如use Blog\Model\BlogTable
最终,虽然我认为模块的管理是博客模块本身的责任,正如第一段所暗示的那样。
编辑:有一件事我忘了提及。理想情况下,如果您决定采用依赖方法,您的模块应该通过服务访问BlogTable。这样你的ModuleAdmin只需做$serviceLocator->get('my-blog-table')
这样一个更干净的方法。
答案 1 :(得分:0)
您可以通过提供基础/共享模块来实现这一目标,该模块提供各种模型,助手等。
但我个人希望围绕功能而不是用户访问级别来构建模块。