0

2 つのモジュールで使用されるモデルがあります。そのモデルのコードを各モジュールに複製したくありません。

たとえば、2 つのモジュールがあります。最初はモデルからブログ投稿を取得し、通常のユーザー向けにそれらを印刷し、もう 1 つは管理者向けにそれらを印刷しますが、さらにいくつかのオプション (ビューで設定) を使用します。同じモデルを 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()
    {
        //..
    }
}

では、このアプリケーションをどのように設計すればよいでしょうか?

4

2 に答える 2

0

これは、さまざまなモデル、ヘルパーなどを提供するベース/共有モジュールを使用することで実現できます。

しかし、個人的には、ユーザーのアクセスレベルではなく、機能を中心にモジュールを設計することを検討しています。

于 2012-11-05T18:13:41.460 に答える
0

最大の問題は、なぜ「ブログスコープ」の外で管理側を分離するのかということです。管理モジュールは、すべてのバックエンド オプションを収集するためのフロントエンドのみにする必要があります (意味がある場合)。

ただし、質問に戻ると、次のように、モデル A のクラスをモデル B に単純に含めることができます。use Blog\Model\BlogTable

最終的には、最初の段落で示唆されているように、モジュールの管理はブログモジュール自体の責任であると考えています。

編集:私が言及するのを忘れたことが1つあります。依存型アプローチを採用する場合は、モジュールでサービスを介して BlogTable にアクセスできるようにするのが理想的です。そうすれば、ModuleAdmin$serviceLocator->get('my-blog-table')は、よりクリーンなアプローチのようなことをするだけで済みます。

于 2012-11-05T15:38:32.447 に答える