16 private $booleanUtils;
21 private $argumentParser;
26 private $argumentInterpreter;
38 $this->argumentInterpreter = $argumentInterpreter;
39 $this->booleanUtils = $booleanUtils ?:
new BooleanUtils();
58 foreach (
$config->documentElement->childNodes as $node) {
59 if ($node->nodeType != XML_ELEMENT_NODE) {
62 switch ($node->nodeName) {
64 $output[
'preferences'][$node->attributes->getNamedItem(
66 )->nodeValue] = $node->attributes->getNamedItem(
73 $typeNodeAttributes = $node->attributes;
74 $typeNodeShared = $typeNodeAttributes->getNamedItem(
'shared');
75 if ($typeNodeShared) {
76 $typeData[
'shared'] = $this->booleanUtils->toBoolean($typeNodeShared->nodeValue);
78 if ($node->nodeName ==
'virtualType') {
79 $attributeType = $typeNodeAttributes->getNamedItem(
'type');
82 $typeData[
'type'] = $attributeType->nodeValue;
88 foreach ($node->childNodes as $typeChildNode) {
89 if ($typeChildNode->nodeType != XML_ELEMENT_NODE) {
92 switch ($typeChildNode->nodeName) {
95 foreach ($typeChildNode->childNodes as $argumentNode) {
96 if ($argumentNode->nodeType != XML_ELEMENT_NODE) {
99 $argumentName = $argumentNode->attributes->getNamedItem(
'name')->nodeValue;
100 $argumentData = $this->argumentParser->parse($argumentNode);
101 $typeArguments[$argumentName] = $this->argumentInterpreter->evaluate(
107 $pluginAttributes = $typeChildNode->attributes;
108 $pluginDisabledNode = $pluginAttributes->getNamedItem(
'disabled');
109 $pluginSortOrderNode = $pluginAttributes->getNamedItem(
'sortOrder');
110 $pluginTypeNode = $pluginAttributes->getNamedItem(
'type');
112 'sortOrder' => $pluginSortOrderNode ? (int)$pluginSortOrderNode->nodeValue : 0,
114 if ($pluginDisabledNode) {
115 $pluginData[
'disabled'] = $this->booleanUtils->toBoolean(
116 $pluginDisabledNode->nodeValue
119 if ($pluginTypeNode) {
120 $pluginData[
'instance'] = $pluginTypeNode->nodeValue;
122 $typePlugins[$pluginAttributes->getNamedItem(
'name')->nodeValue] = $pluginData;
125 throw new \Exception(
126 "Invalid application config. Unknown node: {$typeChildNode->nodeName}." 131 $typeData[
'arguments'] = $typeArguments;
132 if (!empty($typePlugins)) {
133 $typeData[
'plugins'] = $typePlugins;
135 $output[$typeNodeAttributes->getNamedItem(
'name')->nodeValue] = $typeData;
138 throw new \Exception(
"Invalid application config. Unknown node: {$node->nodeName}.");
if(!defined( 'PHP_VERSION_ID')||!(PHP_VERSION_ID===70002||PHP_VERSION_ID===70004||PHP_VERSION_ID >=70006))
__construct(InterpreterInterface $argumentInterpreter, BooleanUtils $booleanUtils=null, ArgumentParser $argumentParser=null)