diff --git a/src/simpletablereport/BaseConfiguration.php b/src/simpletablereport/BaseConfiguration.php index b2adea8..06da85a 100755 --- a/src/simpletablereport/BaseConfiguration.php +++ b/src/simpletablereport/BaseConfiguration.php @@ -26,36 +26,43 @@ class BaseConfiguration { private $options; private $loadedFields = array(); - function __construct($option) { + function __construct($option) + { $this->options = $option; } - public function getOption($name) { + public function getOption($name) + { return $this->options[$name]; } - public function getOptions() { + public function getOptions() + { return $this->options; } - public function getFieldTypeInstance($fieldTypeName, $rendererPrefix) { + public function getFieldTypeInstance($fieldTypeName, $rendererPrefix) + { $key = "$fieldTypeName, $rendererPrefix"; + if (!isset($this->loadedFields[$key])) { $this->loadedFields[$key] = $this->createFieldTypeInstance($fieldTypeName, $rendererPrefix); } + return $this->loadedFields[$key]; } - protected function createFieldTypeInstance($fieldTypeName, $rendererPrefix) { + protected function createFieldTypeInstance($fieldTypeName, $rendererPrefix) + { $classnameBase = ucfirst(strtolower($fieldTypeName)) . 'Type'; $classnameConcrete = ucfirst(strtolower($rendererPrefix)) . $classnameBase; + if (class_exists($classnameConcrete)) { return new $classnameConcrete($this->option); } elseif(class_exists($classnameBase)) { return new $classnameBase($this->option); - } else { - throw new Exception("Field class don't exists for field type '{$fieldTypeName}'."); } - } - + + throw new Exception("Field class don't exists for field type '{$fieldTypeName}'."); + } }