123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- <?php
- /**
- * Application configuration object. Used to access configuration when application is initialized and installed.
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\App;
- use Magento\Framework\App\Config\ConfigTypeInterface;
- use Magento\Framework\App\Config\ScopeCodeResolver;
- use Magento\Framework\App\Config\ScopeConfigInterface;
- /**
- * Class Config
- */
- class Config implements ScopeConfigInterface
- {
- /**
- * Config cache tag
- */
- const CACHE_TAG = 'CONFIG';
- /**
- * @var ScopeCodeResolver
- */
- private $scopeCodeResolver;
- /**
- * @var ConfigTypeInterface[]
- */
- private $types;
- /**
- * Config constructor.
- *
- * @param ScopeCodeResolver $scopeCodeResolver
- * @param array $types
- */
- public function __construct(
- ScopeCodeResolver $scopeCodeResolver,
- array $types = []
- ) {
- $this->scopeCodeResolver = $scopeCodeResolver;
- $this->types = $types;
- }
- /**
- * Retrieve config value by path and scope
- *
- * @param string $path
- * @param string $scope
- * @param null|string $scopeCode
- * @return mixed
- */
- public function getValue(
- $path = null,
- $scope = ScopeConfigInterface::SCOPE_TYPE_DEFAULT,
- $scopeCode = null
- ) {
- if ($scope === 'store') {
- $scope = 'stores';
- } elseif ($scope === 'website') {
- $scope = 'websites';
- }
- $configPath = $scope;
- if ($scope !== 'default') {
- if (is_numeric($scopeCode) || $scopeCode === null) {
- $scopeCode = $this->scopeCodeResolver->resolve($scope, $scopeCode);
- } elseif ($scopeCode instanceof \Magento\Framework\App\ScopeInterface) {
- $scopeCode = $scopeCode->getCode();
- }
- if ($scopeCode) {
- $configPath .= '/' . $scopeCode;
- }
- }
- if ($path) {
- $configPath .= '/' . $path;
- }
- return $this->get('system', $configPath);
- }
- /**
- * Retrieve config flag
- *
- * @param string $path
- * @param string $scope
- * @param null|string $scopeCode
- * @return bool
- */
- public function isSetFlag($path, $scope = ScopeConfigInterface::SCOPE_TYPE_DEFAULT, $scopeCode = null)
- {
- return !!$this->getValue($path, $scope, $scopeCode);
- }
- /**
- * Invalidate cache by type
- * Clean scopeCodeResolver
- *
- * @return void
- */
- public function clean()
- {
- foreach ($this->types as $type) {
- $type->clean();
- }
- $this->scopeCodeResolver->clean();
- }
- /**
- * Retrieve configuration.
- *
- * ('modules') - modules status configuration data
- * ('scopes', 'websites/base') - base website data
- * ('scopes', 'stores/default') - default store data
- *
- * ('system', 'default/web/seo/use_rewrites') - default system configuration data
- * ('system', 'websites/base/web/seo/use_rewrites') - 'base' website system configuration data
- *
- * ('i18n', 'default/en_US') - translations for default store and 'en_US' locale
- *
- * @param string $configType
- * @param string|null $path
- * @param mixed|null $default
- * @return array
- */
- public function get($configType, $path = '', $default = null)
- {
- $result = null;
- if (isset($this->types[$configType])) {
- $result = $this->types[$configType]->get($path);
- }
- return $result !== null ? $result : $default;
- }
- }
|