No Magento 2 (quase) todos os argumentos listados nos arquivos xml têm um atributo xsi:type
que determina como o valor do argumento é iterado.
Por exemplo, no di.xml
arquivo do módulo backend, existe o seguinte:
<argument name="scopeType" xsi:type="const">Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT</argument>
isso significa que o valor do argumento scopeType
é o valor da constanteMagento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT
ou este
<argument name="template" xsi:type="string">Magento_Theme::root.phtml</argument>
isso significa que o valor do argumento template
é a sequência Magento_Theme::root.phtml
.
Quais são todos os valores possíveis desse xsi:type
atributo?
static
vez de umconst
para esse argumento? Parece que não consigo encontrar um tipo que funcione para umstatic
campo da minha classe :-(static
Respostas:
Encontrei todos os tipos verificando
<xs:extension base="argumentType"
arquivos * .xsd.lib/internal/Magento/Framework/Data/etc/argument/types.xsd
, estes são tipos básicos :lib/internal/Magento/Framework/ObjectManager/etc/config.xsd
, pode ser encontrado nos arquivos di.xm l:lib/internal/Magento/Framework/View/Layout/etc/elements.xsd
, pode ser encontrado nos arquivos de layout * .xml :Magento/Ui/etc/ui_components.xsd
, pode ser encontrado nos arquivos * .xml dos componentes da interface do usuário :fonte
De acordo com minhas pesquisas, aqui está o que eu encontrei:
O intérprete de argumento é criado no
lib\internal\Magento\Framework\App\ObjectManagerFactory.php
:Neste código, você pode ver claramente que diferentes intérpretes são usados com base no atributo type do argumento
\Magento\Framework\ObjectManager\Config\Reader\Dom::TYPE_ATTRIBUTE
:\Magento\Framework\Data\Argument\Interpreter\Boolean
\Magento\Framework\Data\Argument\Interpreter\StringUtils
\Magento\Framework\Data\Argument\Interpreter\Number
\Magento\Framework\Data\Argument\Interpreter\NullType
\Magento\Framework\Data\Argument\Interpreter\DataObject
\Magento\Framework\Data\Argument\Interpreter\Constant
\Magento\Framework\App\Arguments\ArgumentInterpreter
(observe que este aceita o\Magento\Framework\Data\Argument\Interpreter\Constant
parâmetro as e não o construtor)Além disso, um intérprete extra é adicionado rapidamente para lidar com os tipos de matriz:
\Magento\Framework\Data\Argument\Interpreter\ArrayType
Nota: parece que o
init_parameter
tipo é usado apenasapp\code\Magento\Store\etc\di.xml
para iniciar algumas constantes:fonte