コントローラから SteeringWheelMapper->fetchCarBrandList() メソッドを呼び出したいと思います。これでうまくいきましたが、問題があります。
SteeringWheelMapper は、\Zend\Http\Client のインスタンスを必要とする構成メソッドを持つ AbstractWebServiceMapper を拡張します。
私の module.config.php ファイルでわかるように、SteeringWheelMapper のインスタンス化に「factories」を使用しています。サプライヤには複数の製品があるため、複数のマッパーを作成する必要があります。現在の状況では、AbstractWebServiceMapper を拡張するすべてのマッパーのファクトリ構成にキーを追加する必要があることを意味します。
たとえば、ExhaustMapper を追加する場合は、追加する必要があります
SupplierName\Mapper\Exhaust => function ($serviceMapper) {
$httpClient => new \Zend\Http\Client;
return new SupplierName\Mapper\ExhaustMapper($httpClient);
}
SupplierName\Mapper\SteeringWheelMapper に対してもこれを行う必要があるため、繰り返します。
ファクトリ構成に新しいキーを追加する代わりに、すべてのマッパーのファクトリを作成する方法が必要だと思います。私の考えは正しいですか?誰かが私がこれを行う方法を提案していますか?
以下のコードを参照してください。
私は ZF2 を使用しており、次のセットアップを使用しています: /vendor
サプライヤ名
- 構成
- module.config.php
- ログ
- ログ.ログ
- ソース
- サプライヤ名
- 実在物
- AbstractEntity.php
- SteeringWheelEntity.php
- マッパー
- AbstractWebServiceMapper.php
- SteeringWheelMapper.php
- 実在物
- サプライヤ名
$steeringWheelMapper = $this->getServiceLocator()->get('SupplierName\Mapper\SteeringWheel'); $carBrandList = $steeringWheelMapper->fetchCarBrandsList();
- 構成
SteeringWheelMapper.php
<?php
namespace SupplierName\Mapper;
class SteeringWheelMapper extends AbstractWebServiceMapper
{
public function fetchCarBrandList()
{
// Code for request
// Dispatch HTTP request
$this->dispatch();
}
}
私の SupplierName/config/module.config.php は次のようになります。
<?php
return array(
'service_manager' => array(
'factories' => array(
'SupplierName\Mapper\SteeringWheel' => function ($serviceManager) {
$httpClient = new \Zend\Http\Client;
return new SupplierName\Mapper\SteeringWheelMapper($httpClient);
},
),
),
'supplier_name' => array(
'api' => array(
'url' => 'http://api.example.com',
),
'log' => array(
'file_location' => __DIR__ . '/../log/log.log',
),
),
);