nyroFwk  0.2
config.class.php
Go to the documentation of this file.
1 <?php
10 class config {
11 
12  const REQUIRED = 'REQUIRED';
13 
19  private $vars;
20 
26  public function __construct(array $prm=array()) {
27  $this->vars = $prm;
28  }
29 
33  public function __toString() {
34  return print_r($this->vars, true);
35  }
36 
44  public function checkCfg($throw=true) {
45  foreach($this->vars as $k=>&$v) {
46  $err = null;
47  if (is_array($v)) {
48  foreach($v as $kk=>&$vv)
49  if ($vv === config::REQUIRED)
50  $err = 'Config: Need '.$k.'->'.$kk.' Parameter.';
51  } else if ($v === config::REQUIRED)
52  $err = 'Config: Need '.$k.' Parameter.';
53  if ($err) {
54  if ($throw)
55  throw new nException($err);
56  else
57  return false;
58  }
59  }
60  return true;
61  }
62 
70  public function init(array $prm) {
71  foreach($prm as $k=>$v) {
72  if (is_null($v) && (!array_key_exists($k, $this->vars) || is_null($this->vars[$k])))
73  throw new nException('Config: Need '.$k.' Parameter.');
74 
75  if (array_key_exists($k, $this->vars)) {
76  if (is_null($this->vars[$k]))
77  $this->vars[$k] = $v;
78  else if (is_array($this->vars[$k]) && is_array($v))
79  config::initTab($this->vars[$k], $v);
80  } else
81  $this->vars[$k] = $v;
82  }
83  }
84 
91  public function overInit(array $prm) {
92  foreach($prm as $k=>$v) {
93  if (!array_key_exists($k, $this->vars))
94  $this->vars[$k] = array();
95 
96  if (is_array($this->vars[$k]))
97  if (is_array($v))
98  foreach($v as $kk=>$vv) {
99  if (is_int($kk))
100  $this->vars[$k][] = $vv;
101  else if (!array_key_exists($kk))
102  $this->vars[$k][$kk] = $vv;
103  }
104  else
105  $this->vars[$k][] = $v;
106  }
107  }
108 
116  public function overload($className, $parent=false) {
117  factory::mergeCfg($this->vars, factory::loadCfg($className, $parent));
118  }
119 
125  public function &getVars() {
126  return $this->vars;
127  }
128 
136  public function get($name) {
137  if ($this->check($name))
138  return $this->vars[$name];
139  else
140  return null;
141  }
142 
150  public function getInArray($name, $key) {
151  if ($this->check($name) && is_array($this->vars[$name]) && array_key_exists($key, $this->vars[$name]))
152  return $this->vars[$name][$key];
153  return null;
154  }
155 
163  public function __get($name) {
164  return $this->get($name);
165  }
166 
174  public function &getRef($name) {
175  if ($this->check($name))
176  return $this->vars[$name];
177  else {
178  $null = null;
179  return $null;
180  }
181  }
182 
188  public function getAll() {
189  return $this->vars;
190  }
191 
198  public function setA(array $vars) {
199  foreach($vars as $k=>$v)
200  $this->set($k, $v);
201  }
202 
209  public function setARef(array $vars) {
210  foreach($vars as $k=>&$v)
211  $this->setRef($k, $v);
212  }
213 
221  public function set($name, $val) {
222  $this->vars[$name] = $val;
223  }
224 
233  public function setInArray($name, $key, $val) {
234  $this->vars[$name][$key] = $val;
235  }
236 
244  public function setInArrayA($name, array $values) {
245  $this->vars[$name] = array_merge($this->vars[$name], $values);
246  }
247 
255  public function setRef($name, &$val) {
256  $this->vars[$name] = &$val;
257  }
258 
266  public function __set($name, $val) {
267  $this->set($name, $val);
268  }
269 
276  public function check($name) {
277  return array_key_exists($name, $this->vars);
278  }
279 
287  public function checkInArray($name, $key) {
288  return array_key_exists($name, $this->vars) && is_array($this->vars[$name]) && array_key_exists($key, $this->vars[$name]);
289  }
290 
298  public function __isset($name) {
299  return $this->check($name);
300  }
301 
307  public function del($name) {
308  if ($this->check($name))
309  unset($this->vars[$name]);
310  }
311 
318  public function delInArray($name, $key) {
319  if ($this->check($name) && is_array($this->vars[$name]) && array_key_exists($key, $this->vars[$name]))
320  unset($this->vars[$name][$key]);
321  }
322 
329  public function __unset($name) {
330  $this->del($name);
331  }
332 
342  public static function initTab(array &$vars, array $init) {
343  $ret = true;
344  foreach($init as $k=>&$v) {
345  if (!array_key_exists($k,$vars)) {
346  if (is_null($v))
347  $ret = false;
348  $vars[$k] = $v;
349  }
350  }
351  return $ret;
352  }
353 
362  public static function initTabNum(array &$vars, array $varsNum, $nameOther='other', $rtl=true) {
363  if (!empty($vars) && !empty($varsNum)) {
364  $nbvars = count($vars);
365  $nbvarsNum = count($varsNum);
366  if ($nbvars < $nbvarsNum)
367  array_splice($varsNum, $nbvars);
368  else if ($nbvars > $nbvarsNum) {
369  $tmp = array();
370  for($i=$nbvarsNum; $i<$nbvars; $i++)
371  $tmp[] = $nameOther.round($i-$nbvarsNum+1);
372  if ($rtl)
373  $varsNum = array_merge($varsNum, $tmp);
374  else
375  $varsNum = array_merge($tmp, $varsNum);
376  }
377  $vars = array_combine($varsNum, $vars);
378  }
379  }
380 
381 }
__set($name, $val)
setRef($name, &$val)
__toString()
overInit(array $prm)
getInArray($name, $key)
static initTab(array &$vars, array $init)
del($name)
check($name)
setA(array $vars)
overload($className, $parent=false)
init(array $prm)
__isset($name)
__get($name)
__construct(array $prm=array())
delInArray($name, $key)
__unset($name)
setInArrayA($name, array $values)
& getVars()
static loadCfg($className, $searchParent=true)
setARef(array $vars)
static mergeCfg(array &$prm, array $cfg)
setInArray($name, $key, $val)
static initTabNum(array &$vars, array $varsNum, $nameOther='other', $rtl=true)
const REQUIRED
checkCfg($throw=true)
checkInArray($name, $key)
& getRef($name)
Generated on Sun Oct 15 2017 22:25:20 for nyroFwk by doxygen 1.8.13