/**
* Magiix method to adapt option accessors.
*
* @param string $name The method name.
* @param array $args The method arguments.
*
* @return mixed
*
* @throws \LogicException
*
* @since 4.0.0
*/
public function __call(string $name, array $args)
{
// Getter
if (stripos($name, 'get') === 0) {
$fieldName = static::findOptionName(lcfirst(substr($name, 3)));
if ($fieldName !== false) {
return $this->getOption($fieldName);
}
} else {
$fieldName = static::findOptionName($name);
if ($fieldName !== false) {
if (!\array_key_exists(0, $args)) {
throw new \InvalidArgumentException(sprintf('%s::%s() miss first argument.', \get_called_class(), $name));
}
return $this->setOption($fieldName, $args[0]);
}
}
throw new \BadMethodCallException(sprintf('Method %s() not found in class: %s', $name, \get_called_class()));
}