runtimeState = $str; } /** * Return true if the argument exists * * @param String $attr The argument to retrieve * @return bool True if it exists, otherwise false */ public function __isset($attr) { try { $this->__get($attr); return true; } catch (\InvalidArgumentException $e) { return false; } } /** * Return the given attribute * * If the container string is not yet parsed, this will happen here * * @param String $attr The attribute to retrieve * @return mixed The value of the attribute * @throws \InvalidArgumentException When the attribute does not exist */ public function __get($attr) { $start = strpos($this->runtimeState, $attr . "="); if ($start === false) { throw new \InvalidArgumentException("Unknown property $attr"); } $start += strlen($attr . "="); $len = strpos($this->runtimeState, "\n", $start) - $start; $this->$attr = trim(substr($this->runtimeState, $start, $len)); return $this->$attr; } }