lib/Psc/DataInput.php
public function setDataWithKeys(Array $keys, $value) {
    $data =& $this->data;
    
    if ($keys === array()) {
      if (!is_array($value)) {
        throw new DataInputException('Wenn $keys leer ist, darf value nur ein array sein!');
      }
      
      return $data = $value;
    }
    
    $lastKey = array_pop($keys);
    foreach ($keys as $key) {
      if (!array_key_exists($key,$data)) {
        $data[$key] = array();
      }
      $data =& $data[$key];
    }
    $data[$lastKey] = $value;
    
    return $data;
  }
public function setDataWithKeys(Array $keys, $value) {
    $data =& $this->data;
    
    if ($keys === array()) {
      if (!is_array($value)) {
        throw new DataInputException('Wenn $keys leer ist, darf value nur ein array sein!');
      }
      
      return $data = $value;
    }
    
    $lastKey = array_pop($keys);
    foreach ($keys as $key) {
      if (!array_key_exists($key,$data)) {
        $data[$key] = array();
      }
      $data =& $data[$key];
    }
    $data[$lastKey] = $value;
    
    return $data;
  }
public function setDataWithKeys ( Array $ keys , $ value ) { $ data = & $ this -> data ; if ( $ keys === array ( ) ) { if ( ! is_array ( $ value ) ) { throw new DataInputException ( 'Wenn $keys leer ist, darf value nur ein array sein!' ) ; } return $ data = $ value ; } $ lastKey = array_pop ( $ keys ) ; foreach ( $ keys as $ key ) { if ( ! array_key_exists ( $ key , $ data ) ) { $ data [ $ key ] = array ( ) ; } $ data = & $ data [ $ key ] ; } $ data [ $ lastKey ] = $ value ; return $ data ; }
Setzt einen Wert mit einem Pfad

Ableitenden Klassen können dann sowas machen:

public function bla() {
$keys = func_get_args();
$value = array_pop($keys);
return $this->setDataWithKeys($keys, $value, self::THROW_EXCEPTION);
}

oder so
ist $keys ein leerer array werden alle Daten des Objektes mit $value ersetzt.
ist $value dann kein Array wird toArray() einen array mit $value als einziges Element zurückgeben - das ist sehr weird
also besser ist immer $value einen array zu haben
Setzt einen Wert mit einem Pfad