Модель Zend Framework 2 / адаптер многоразового использования

У меня есть модель, которая используется двумя модулями. Я не хочу дублировать код для этой модели в каждом модуле.

Например у меня есть 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 ответа

Решение

Самый большой вопрос может заключаться в том, почему вы отделяете административную сторону от "Blog-Scope". Административный модуль должен быть только внешним интерфейсом для сбора всех опций (если это имеет смысл)

Однако, чтобы вернуться к вашему вопросу: вы можете просто включить эти классы из модели A в модель B, например: use Blog\Model\BlogTable

В конечном счете, хотя я и считаю управление модулем ответственным за сам модуль блога, на что намекает первый абзац.

Редактировать: одна вещь, которую я забыл упомянуть. В идеале, если вы решите использовать зависимый подход, ваш модуль должен сделать BlogTable доступным через службу. Таким образом, ваш ModuleAdmin должен сделать что-то вроде $serviceLocator->get('my-blog-table') что гораздо более чистый подход.

Вы можете достичь этого, имея базовый / общий модуль, который предоставляет различные модели, помощников и т. Д.

Но лично я хотел бы искать модули архитектуры вокруг функциональности, а не уровней доступа пользователя.

Другие вопросы по тегам