EGOCMS  24.0
EGOTEC Content-Managament-System
Console_Parameter.php
gehe zur Dokumentation dieser Datei
1 <?php
13 class Console_Parameter_Exception extends Exception
14 {
15  const UNKNOWN_OPTION = 1;
16 }
17 
24 {
25  private $_params = array();
26  private $_registered_params = array();
27 
44  public function registerParams($params)
45  {
46  $this->_registered_params = $params;
47  }
48 
76  public function parse($parameter)
77  {
78  for ($i = 0; $i < sizeof($parameter); $i++)
79  {
80  $option = '';
81  $value = '';
82 
83  if (preg_match('/^--/', $parameter[$i]))
84  { // Es ist ein langer Parameter (--param[=...]).
85  if (strstr($parameter[$i], '='))
86  { // Es ist ein key=val Parameter.
87  $_split = array();
88  $_split = explode('=', $parameter[$i]);
89  $option = preg_replace('/^--/', '', $_split[0]);
90  $value = $_split[1];
91  } else
92  { // Ansonsten wird der Wert auf wahr gesetzt.
93  $option = preg_replace('/^--/', '', $parameter[$i]);
94  $value = true;
95  }
96  } else
97  { // Ein kurzer Parameter (-h [Wert]).
98  $option = preg_replace('/^-/', '', $parameter[$i]);
99  if (!preg_match('/^-/', $parameter[$i+1]) && sizeof($parameter)>($i+1))
100  { // Es gibt einen Übergabeparameter.
101  $value = $parameter[$i+1];
102  $i++;
103  } else
104  {
105  $value = true;
106  }
107  }
108 
109  if (($opt = $this->_checkOption($option)) === false)
110  { // Unbekannte Parameter führen zu einer Ausnahme.
111  throw new Console_Parameter_Exception('Unbekannter Parameter: ' . $option, Console_Parameter_Exception::UNKNOWN_OPTION);
112  }
113  $this->_params[$opt] = $value;
114  }
115  }
116 
123  private function _checkOption($option)
124  {
125  foreach ($this->_registered_params as $main_key => $main_val)
126  {
127  foreach ($main_val as $sub_val)
128  {
129  if (!strcmp($sub_val, $option))
130  {
131  return $main_key;
132  }
133  }
134  }
135  return false;
136  }
137 
145  public function __get($key)
146  {
147  return isset($this->_params[$key])?$this->_params[$key]:false;
148  }
149 }
150 ?>