/** * Execute a terminal object using given arguments * * @param string $name * @param mixed $arguments */ public function execute($name, $arguments) { $class = $this->getClass($name); $reflection = new \ReflectionClass($class); $obj = $reflection->newInstanceArgs($arguments); $obj->parser($this->parser); // If the object needs any settings, import them foreach ($obj->settings() as $obj_setting) { $setting = $this->settings->get($obj_setting); if ($setting) { $obj->importSetting($setting); } } if ($this->isBasic($name)) { $this->executeBasic($obj); } else { return $this->executeDynamic($obj); } }