123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Webapi\Model;
- use Magento\Webapi\Model\Cache\Type\Webapi as WebapiCache;
- use Magento\Webapi\Model\Config\Reader;
- use Magento\Framework\App\ObjectManager;
- use Magento\Framework\Serialize\SerializerInterface;
- /**
- * This class gives access to consolidated web API configuration from <Module_Name>/etc/webapi.xml files.
- *
- * @api
- * @since 100.0.2
- */
- class Config implements ConfigInterface
- {
- const CACHE_ID = 'webapi_config';
- /**
- * Pattern for Web API interface name.
- */
- const SERVICE_CLASS_PATTERN = '/^(.+?)\\\\(.+?)\\\\Service\\\\(V\d+)+(\\\\.+)Interface$/';
- const API_PATTERN = '/^(.+?)\\\\(.+?)\\\\Api(\\\\.+)Interface$/';
- /**
- * @var WebapiCache
- */
- protected $cache;
- /**
- * @var Reader
- */
- protected $configReader;
- /**
- * @var array
- */
- protected $services;
- /**
- * @var SerializerInterface
- */
- private $serializer;
- /**
- * Initialize dependencies.
- *
- * @param WebapiCache $cache
- * @param Reader $configReader
- * @param SerializerInterface|null $serializer
- */
- public function __construct(
- WebapiCache $cache,
- Reader $configReader,
- SerializerInterface $serializer = null
- ) {
- $this->cache = $cache;
- $this->configReader = $configReader;
- $this->serializer = $serializer ?: ObjectManager::getInstance()->get(SerializerInterface::class);
- }
- /**
- * {@inheritdoc}
- */
- public function getServices()
- {
- if (null === $this->services) {
- $services = $this->cache->load(self::CACHE_ID);
- if ($services && is_string($services)) {
- $this->services = $this->serializer->unserialize($services);
- } else {
- $this->services = $this->configReader->read();
- $this->cache->save($this->serializer->serialize($this->services), self::CACHE_ID);
- }
- }
- return $this->services;
- }
- }
|