我有一个由两个模块使用的模型。我不想将该模型的代码复制到每个模块中。
例如,我有两个模块。第一个是从model获取博客帖子并打印给普通用户,另一个是打印给管理员用户,但有几个选项(这些选项是在视图中设置的)。我会在两个地方使用相同的模型。然后..。那可不好。
只有一段代码:
<?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()
{
//..
}
}那么,我应该如何设计这个应用程序呢?
发布于 2012-11-05 23:38:32
最大的问题可能是为什么要将管理部分分离在“Blog-Scope”之外。管理模块应该只是收集所有后端选项的前端(如果这有意义的话)
不过,回到您的问题:您可以简单地将模型A中的那些类包含到模型B中,如use Blog\Model\BlogTable
最终,我认为模块的管理是博客模块本身的责任,正如第一段中所暗示的那样。
编辑:有一件事我忘了提。理想情况下,如果您决定采用依赖方法,您的模块应该使BlogTable可通过服务访问。这样一来,你的ModuleAdmin只需要做一些像$serviceLocator->get('my-blog-table')这样的事情,这是一种更干净的方法。
发布于 2012-11-06 02:13:41
你可以通过一个基本的/共享的模块来实现这一点,该模块提供了各种模型、助手等。
但就我个人而言,我希望围绕功能而不是用户访问级别来设计模块。
https://stackoverflow.com/questions/13235240
复制相似问题