/** * Encode configuration object into RAW string (PHP class). * * @param \Grav\Common\Config $var * @return string * @throws \RuntimeException */ protected function encode($var) { if (!$var instanceof \Grav\Common\Config) { throw new \RuntimeException('Provided data is not configuration'); } // Build the object variables string $vars = array(); $options = $var->toArray(); foreach ($options as $k => $v) { if (is_int($v)) { $vars[] = "\tpublic \$" . $k . " = " . $v . ";"; } elseif (is_bool($v)) { $vars[] = "\tpublic \$" . $k . " = " . ($v ? 'true' : 'false') . ";"; } elseif (is_scalar($v)) { $vars[] = "\tpublic \$" . $k . " = '" . addcslashes($v, '\\\'') . "';"; } elseif (is_array($v) || is_object($v)) { $vars[] = "\tpublic \$" . $k . " = " . $this->encodeArray((array) $v) . ";"; } } $vars = implode("\n", $vars); return "<?php\nnamespace Grav;\n\nclass Config extends \\Grav\\Common\\Config {\n {$vars}\n}"; }