1 <?php
2
3 /* --------------------------------------------------------------
4 ProductAttributeServiceFactory.inc.php 2016-01-18
5 Gambio GmbH
6 http://www.gambio.de
7 Copyright (c) 2015 Gambio GmbH
8 Released under the GNU General Public License (Version 2)
9 [http://www.gnu.org/licenses/gpl-2.0.html]
10 --------------------------------------------------------------
11 */
12
13 /**
14 * Class ProductAttributeServiceFactory
15 *
16 * @category System
17 * @package ProductModule
18 * @subpackage Factories
19 */
20 class ProductAttributeServiceFactory extends AbstractProductAttributeServiceFactory
21 {
22 /**
23 * @var CI_DB_query_builder
24 */
25 private $db;
26
27 /**
28 * @var ProductAttributeFactoryInterface
29 */
30 private $productAttributeFactory;
31
32
33 /**
34 * Initialize the product attribute service factory.
35 *
36 * @param CI_DB_query_builder $db
37 */
38 public function __construct(CI_DB_query_builder $db)
39 {
40 $this->db = $db;
41 }
42
43
44 /**
45 * Creates a product attribute object service.
46 *
47 * @return ProductAttributeObjectService
48 */
49 public function createProductAttributeObjectService()
50 {
51 return MainFactory::create('ProductAttributeObjectService', $this->_getProductAttributeFactory());
52 }
53
54
55 /**
56 * Creates a product attribute service.
57 *
58 * @return ProductAttributeService
59 */
60 public function createProductAttributeService()
61 {
62 return MainFactory::create('ProductAttributeService',
63 MainFactory::create('ProductAttributeRepository',
64 MainFactory::create('ProductAttributeRepositoryReader',
65 $this->db,
66 $this->_getProductAttributeFactory()),
67 MainFactory::create('ProductAttributeRepositoryWriter',
68 $this->db),
69 MainFactory::create('ProductAttributeRepositoryDeleter',
70 $this->db)));
71 }
72
73
74 /**
75 * Returns the product attribute factory.
76 * When the factory is not instantiated, a new instance will be created and returned.
77 *
78 * @return ProductAttributeFactoryInterface
79 */
80 protected function _getProductAttributeFactory()
81 {
82 if(null === $this->productAttributeFactory)
83 {
84 $this->productAttributeFactory = MainFactory::create('ProductAttributeFactory');
85 }
86
87 return $this->productAttributeFactory;
88 }
89 }