मेरे शोधों के अनुसार, यहाँ वही है जो मैंने पाया है:
तर्क दुभाषिया में बनाया गया है lib\internal\Magento\Framework\App\ObjectManagerFactory.php
:
protected function createArgumentInterpreter(
\Magento\Framework\Stdlib\BooleanUtils $booleanUtils
) {
$constInterpreter = new \Magento\Framework\Data\Argument\Interpreter\Constant();
$result = new \Magento\Framework\Data\Argument\Interpreter\Composite(
[
'boolean' => new \Magento\Framework\Data\Argument\Interpreter\Boolean($booleanUtils),
'string' => new \Magento\Framework\Data\Argument\Interpreter\StringUtils($booleanUtils),
'number' => new \Magento\Framework\Data\Argument\Interpreter\Number(),
'null' => new \Magento\Framework\Data\Argument\Interpreter\NullType(),
'object' => new \Magento\Framework\Data\Argument\Interpreter\DataObject($booleanUtils),
'const' => $constInterpreter,
'init_parameter' => new \Magento\Framework\App\Arguments\ArgumentInterpreter($constInterpreter),
],
\Magento\Framework\ObjectManager\Config\Reader\Dom::TYPE_ATTRIBUTE
);
// Add interpreters that reference the composite
$result->addInterpreter('array', new \Magento\Framework\Data\Argument\Interpreter\ArrayType($result));
return $result;
}
इस कोड में, आप स्पष्ट रूप से देख सकते हैं कि तर्क के प्रकार के आधार पर विभिन्न दुभाषियों का उपयोग किया जाता है \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
- const =>
\Magento\Framework\Data\Argument\Interpreter\Constant
- init_parameter =>
\Magento\Framework\App\Arguments\ArgumentInterpreter
(ध्यान दें कि यह एक \Magento\Framework\Data\Argument\Interpreter\Constant
पैरामीटर के रूप में लेता है और निर्माता पैरामीटर नहीं)
इसके अलावा सरणी प्रकार को संभालने के लिए मक्खी पर एक अतिरिक्त दुभाषिया जोड़ा जाता है:
- सरणी =>
\Magento\Framework\Data\Argument\Interpreter\ArrayType
नोट: ऐसा लगता है कि init_parameter
प्रकार केवल app\code\Magento\Store\etc\di.xml
कुछ स्थिरांक शुरू करने के लिए उपयोग किया जाता है :
<argument name="xFrameOpt" xsi:type="init_parameter">Magento\Framework\App\Response\XFrameOptPlugin::DEPLOYMENT_CONFIG_X_FRAME_OPT</argument>
...
<argument name="isCustomEntryPoint" xsi:type="init_parameter">Magento\Store\Model\Store::CUSTOM_ENTRY_POINT_PARAM</argument>
...
<argument name="runMode" xsi:type="init_parameter">Magento\Store\Model\StoreManager::PARAM_RUN_TYPE</argument>
<argument name="scopeCode" xsi:type="init_parameter">Magento\Store\Model\StoreManager::PARAM_RUN_CODE</argument>
static
एक के बजायconst
इस तरह के एक तर्क के लिए? मुझे ऐसा कोई प्रकार नहीं मिल रहा हैstatic
जो मेरी कक्षा में किसी क्षेत्र के लिए काम करता हो :-(