1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
clearnsharedargmanager.php
См. документацию.
1<?php
2
16{
17 protected $parsedOptions = NULL;
18
34 public function __construct ($arOptions, $arParseParams)
35 {
36 $this->CheckParseParams ($arParseParams);
37
38 $this->parsedOptions = $this->ParseOptions ($arOptions, $arParseParams);
39 }
40
41 public function GetParsedOptions()
42 {
43 if ($this->parsedOptions === NULL)
44 throw new Exception();
45
46 return ($this->parsedOptions);
47 }
48
49
50 public static function StaticParser ($arOptions, $arParseParams)
51 {
52 try
53 {
54 $oArgManager = new CLearnSharedArgManager ($arOptions, $arParseParams);
55 $rc = $oArgManager->GetParsedOptions();
56 unset ($oArgManager);
57 }
58 catch (Exception $e)
59 {
60 throw new LearnException (
61 'EA_PARAMS: ArgManager at line: ' . $e->GetLine(),
63 }
64 return ($rc);
65 }
66
67
68 protected function ParseOptions ($arOptions, $arParseParams)
69 {
70 if ( ! is_array($arOptions) )
71 throw new Exception();
72
73 $arParsedOptions = array();
74
75 foreach ($arParseParams as $paramName => $arParamData)
76 {
77 // If option cannot be omitted - check it
78 if ($arParamData['mandatory'])
79 {
80 if ( ! array_key_exists($paramName, $arOptions) )
81 throw new Exception();
82 }
83 else // option can be omitted, so can be default value
84 {
85 if ( ! array_key_exists($paramName, $arOptions) )
86 {
87 if (array_key_exists('default_value', $arParamData))
88 $arOptions[$paramName] = $arParamData['default_value'];
89 }
90 }
91
92 // now, check and cast (if should) type of value in $arOptions[$paramName]
93 switch ($arParamData['type'])
94 {
95 case 'boolean':
96 if ( ! in_array($arOptions[$paramName], array(true, false), true) )
97 throw new Exception();
98 break;
99
100 case 'string':
101 if ( ! is_string($arOptions[$paramName]) )
102 throw new Exception();
103 break;
104
105 case 'integer':
106 if ( ! is_int($arOptions[$paramName]) )
107 throw new Exception();
108 break;
109
110 case 'strictly_castable_to_integer':
111 if ( ! is_numeric($arOptions[$paramName]) )
112 throw new Exception();
113
114 if ( ! is_int($arOptions[$paramName] + 0) )
115 throw new Exception();
116
117 $arOptions[$paramName] = (int) ($arOptions[$paramName] + 0);
118 break;
119
120 default:
121 throw new Exception();
122 break;
123 }
124
125 $arParsedOptions[$paramName] = $arOptions[$paramName];
126 unset ($arOptions[$paramName]);
127 }
128
129 // Ensure that there is no more options
130 if (count($arOptions) > 0)
131 throw new Exception('there is unprocessed options');
132
133 return ($arParsedOptions);
134 }
135
136 protected function CheckParseParams ($arParseParams)
137 {
138 if ( ! is_array($arParseParams) )
139 throw new Exception();
140
141 $arMandatoryFields = array (
142 'type' => array('boolean', 'integer', 'strictly_castable_to_integer', 'string'),
143 'mandatory' => array(true, false)
144 );
145
146 foreach ($arParseParams as $key => $element)
147 {
148 if ( ! is_array($element) )
149 throw new Exception();
150
151 // check mandatory fields
152 foreach ($arMandatoryFields as $mandatoryField => $mandatoryFieldAllowedValues)
153 {
154 if ( ! array_key_exists($mandatoryField, $element) )
155 throw new Exception();
156
157 // check allowed values
158 if (is_array($mandatoryFieldAllowedValues))
159 if ( ! in_array($element[$mandatoryField], $mandatoryFieldAllowedValues, true) )
160 throw new Exception();
161 }
162
163 // if exists $element['default_value'] => $element['mandatory'] must be FALSE
164 // because if mandatory is TRUE => value must be set and no default value available
165 if (array_key_exists('default_value', $element) && ($element['mandatory'] !== false))
166 throw new Exception('"default_value" incompatibily with enabled "mandatory" flag');
167 }
168 }
169}
ParseOptions($arOptions, $arParseParams)
Определения clearnsharedargmanager.php:68
__construct($arOptions, $arParseParams)
Определения clearnsharedargmanager.php:34
CheckParseParams($arParseParams)
Определения clearnsharedargmanager.php:136
static StaticParser($arOptions, $arParseParams)
Определения clearnsharedargmanager.php:50
Определения learnexception.php:4
const EXC_ERR_ALL_PARAMS
Определения learnexception.php:7
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$arOptions
Определения structure.php:223
if(empty($signedUserToken)) $key
Определения quickway.php:257
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936