/
githubmirror
/
magento2
Обзор
Документация
Войти
/
githubmirror
/
magento2
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
2.4-develop
lib/internal/Magento/Framework/GraphQl/Config.php
91 строка
2 KB
Alexandra Zota
ACP2E-4019: CE copyright updates for 2.4.9-beta1
22 окт 2025, 17:47
22 окт 2025, 17:47
1b769b7
Код
Авторство
О чём код?
<?php /** * Copyright 2018 Adobe * All Rights Reserved. */ declare(strict_types=1); namespace Magento\Framework\GraphQl; use Magento\Framework\Config\DataInterface; use Magento\Framework\GraphQl\Config\ConfigElementFactoryInterface; use Magento\Framework\GraphQl\Config\ConfigElementInterface; use Magento\Framework\GraphQl\Query\Fields as QueryFields; /** * Provides access to typing information for a configured GraphQL schema. */ class Config implements ConfigInterface { /** * @var DataInterface */ private $configData; /** * @var ConfigElementFactoryInterface */ private $configElementFactory; /** * @var QueryFields */ private $queryFields; /** * @param DataInterface $data * @param ConfigElementFactoryInterface $configElementFactory * @param QueryFields $queryFields */ public function __construct( DataInterface $data, ConfigElementFactoryInterface $configElementFactory, QueryFields $queryFields ) { $this->configData = $data; $this->configElementFactory = $configElementFactory; $this->queryFields = $queryFields; } /** * @inheritdoc */ public function getConfigElement(string $configElementName) : ConfigElementInterface { $data = $this->configData->get($configElementName); if (!isset($data['type'])) { throw new \LogicException( sprintf('Config element "%s" is not declared in GraphQL schema', $configElementName) ); } $fieldsInQuery = $this->queryFields->getFieldsUsedInQuery(); if (isset($data['fields'])) { if (!empty($fieldsInQuery)) { $data['fieldsInQuery'] = array_intersect_key($data['fields'], $fieldsInQuery); ksort($data['fieldsInQuery']); } ksort($data['fields']); } return $this->configElementFactory->createFromConfigData($data); } /** * @inheritdoc */ public function getDeclaredTypes() : array { $types = []; foreach ($this->configData->get(null) as $item) { if (isset($item['type'])) { $types[] = [ 'name' => $item['name'], 'type' => $item['type'], ]; } } return $types; } }