Php zend framework 2模型/适配器可重用

Php zend framework 2模型/适配器可重用,php,zend-framework2,zend-framework-modules,Php,Zend Framework2,Zend Framework Modules,我有一个由两个模块使用的模型。我不想将该模型的代码复制到每个模块中 例如,我有两个模块。首先从模型中获取博客文章并为普通用户打印,另一个为管理员用户打印,但还有一些选项(在视图中设置)。我会在两个地方有相同的模型。和。。那太糟糕了 只是一段代码: <?php namespace Blog\Model; use Zend\Db\Adapter\Adapter; use Zend\Db\ResultSet\ResultSet; use Zend\Db\TableGateway\Abstract

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

例如,我有两个模块。首先从模型中获取博客文章并为普通用户打印,另一个为管理员用户打印,但还有一些选项(在视图中设置)。我会在两个地方有相同的模型。和。。那太糟糕了

只是一段代码:

<?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()
    {
        //..
    }
}

最大的问题可能是,为什么要将管理端分离到“博客范围”之外。管理模块应该只是收集所有后端选项的前端(如果有意义的话)

然而,回到您的问题:您可以简单地将模型A中的类包含到模型B中,如
useblog\model\BlogTable

最后,正如第一段所暗示的,我认为模块的管理是博客模块本身的责任


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

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


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

我想你说的是第4段,因为第3段与第1段相关;)为此,用户Jurian Sluimans发布了一篇很棒的博客文章,在这种情况下,请看DrBezaTo的答案:编写一个模型“博客”,它包含所有操作,包括添加、编辑、删除、调整、查看、详细视图等。。之后,开始使用Zend\Permission使添加/编辑/删除/缓和等操作仅对允许的成员可用/roles@SinaMiandashti不知道什么是行不通的,但doctrinetities只是将模型数据存储到数据库中的另一种方式,没有真正的区别,到目前为止,几乎所有东西都对我有效;)