public function node($name, $defaultValue = null)
{
if ($name === null || $name == '') {
throw new Exception\ExtensionException(sprintf('Node name must not be empty.'));
}
$obj = new \stdClass();
if (func_num_args() > 1) {
if ($defaultValue !== null && !is_scalar($defaultValue)) {
$valid = true;
if (!is_array($defaultValue)) {
$valid = false;
} else {
//Additional check that all values of arrays are scalar.
foreach ($defaultValue as $k => $v) {
if ($v !== null && !is_scalar($v)) {
$valid = false;
break;
}
}
}
if (!$valid) {
throw new Exception\ExtensionException(sprintf('Default node value must be scalar or scalarArray (one dimension array with numeric keys), "%s" given.', gettype($defaultValue)));
}
}
$obj->default = $defaultValue;
}
$this->parameters[$name] = $obj;
return $this;
}