Ich sehe in den di.xml
Dateien aus dem Kern, dass einige der Argumente den Typ haben, init_parameter
aber die Werte der Parameter sind alle Konstanten.
<type name="Magento\Framework\View\Page\Config\Renderer">
<arguments>
<argument name="appMode" xsi:type="init_parameter">Magento\Framework\App\State::PARAM_MODE</argument>
</arguments>
</type>
oder dieses
<type name="Magento\Framework\App\Cache\State">
<arguments>
<argument name="banAll" xsi:type="init_parameter">Magento\Framework\App\Cache\State::PARAM_BAN_CACHE</argument>
</arguments>
</type>
und viele andere.
Aber von dem, was ich in dem zugehörigen Interpreter sehe init_parameter
, wird der konstante Interpreter verwendetMagento\Framework\App\Arguments\ArgumentInterpreter::evaluate
public function evaluate(array $data)
{
return ['argument' => $this->constInterpreter->evaluate($data)];
}
Aber das Ergebnis ist ein bisschen anders als das Magento\Framework\Data\Argument\Interpreter\Constant::evaluate
public function evaluate(array $data)
{
if (!isset($data['value']) || !defined($data['value'])) {
throw new \InvalidArgumentException('Constant name is expected.');
}
return constant($data['value']);
}
Kann mir bitte jemand erklären, wie der init_parameter
Typ funktioniert und wie alles unter der Haube passiert?
Was sind alle erlaubten xsi: type-Werte in den XML-Dateien von Magento2?
http://devdocs.magento.com/guides/v2.0/extension-dev-guide/build/di-xml-file.html
Knotenformat :
<argument xsi:type="init_parameter">{Constant::NAME}</argument>
Beschreibung : Das globale Argument einer durch dargestellten Anwendung
Constant::NAME
wird nachgeschlagen und als Argument übergeben.Mögliche Werte : Konstante des globalen Arguments, das den Namen enthält
Knotenformat :
<argument xsi:type="const">{Constant::NAME}</argument>
Beschreibung : Constant :: NAME als Argument übergeben.
Mögliche Werte : Alle Konstantennamen sind möglich.
Nehmen wir das folgende Beispiel.
magento \ vendor \ magento \ module-store \ etc \ di.xml
magento \ vendor \ magento \ module-store \ Model \ StoreResolver.php
Die Idee ist einfach. Sie können Ihre Variablen und ihren Wert direkt aus der
di.xml
Datei übergeben. Anstatt diese Werte in Ihrem Modell zu definieren.Sie müssen also nur Ihre Variablen initialisieren und erhalten den Wert von ur
di.xml
Ich hoffe es hilft
quelle