0 レビュー
1 回答
php-Zend Framework 2、モデルクエリをWebサービスにする
私はZendフレームワークに完全に慣れていません(すでにSymfony2を使用していて、似ていると聞きましたが)、サイトをアップグレードする必要があるプロジェクトを開始しました(すでに完全になっています)機能的)Zend1.11で作成されました。
私のアップグレードの目的は、データ(元々はデータベースに保存されていたもので、現在はnosqlとデータベースに保存され、将来的には他の場所に保存される可能性があります)をより構築可能にし、強度を下げることです。 Zendのモデルと組み合わせる。 (MVCのMのようにモデル化します。)
これを実現するために、データとやり取りするWebサービスとZendのモデルを使用するように依頼されました。 そうすれば、データの構造が変更されても、Zend Webサイトが直接影響を受けることはなく(そして引き続き機能します)、Webサービスを再配置するだけで済みます。
ZendのモデルをデータベースではなくWebサービスと相互作用させるための洗練された方法はありますか?
私の質問が理解できることを願っています...
良い一日を。
M.G。
わからない
0
レビュー
答え :
解決策:
データマッパーパターンを使用できます。参考までに、モジュールZfcUserがこのパターンをどのように採用したか
を確認できます。エンティティごとにマッパーのインターフェイスを作成し、データストレージに応じて実装を作成できます。 たとえば、
製品エンティティ
class Product
{
/**
* @var int
*/
protected $id;
/**
* @var string
*/
protected $name;
/**
* Get id.
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set id.
*
* @param int $id
* @return UserInterface
*/
public function setId($id)
{
$this->id = (int) $id;
return $this;
}
/**
* Get name.
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set name.
*
* @param string $name
* @return UserInterface
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
}
プロダクトマッパー
<?php
<?php
namespace Product\Mapper;
interface ProductMapperInterface
{
/**
* @var int $id
* @returns \Product\Entity\Product
*/
public function findById($id);
/**
* @var array $criteria
* @returns \Product\Entity\Product[]
*/
public function find(array $criteria, .....);
/**
* @var \Product\Entity\Product $product
*/
public function insert($product);
/**
* @var \Product\Entity\Product $product
*/
public function update($product);
}
エンティティにデータを入力するには、ハイドレーターを使用できます。参考までに、ZfcUserがハイドレーターをどのように使用しているかを確認できます。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。