From 9735036c044ad122974de88aea9f421a8afb5d1f Mon Sep 17 00:00:00 2001 From: MartkCz Date: Mon, 8 Jul 2019 14:43:10 +0200 Subject: [PATCH] use nette/schema --- src/DI/InvoiceExtension.php | 38 ++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/DI/InvoiceExtension.php b/src/DI/InvoiceExtension.php index da4308f..52c611b 100755 --- a/src/DI/InvoiceExtension.php +++ b/src/DI/InvoiceExtension.php @@ -13,35 +13,39 @@ use Contributte\Invoice\Templates\ITemplate; use Contributte\Invoice\Translator; use Nette\DI\CompilerExtension; +use Nette\Schema\Expect; +use Nette\Schema\Schema; class InvoiceExtension extends CompilerExtension { - /** @var mixed[] */ - public $defaults = [ - 'company' => [ - 'name' => null, - 'town' => null, - 'address' => null, - 'zip' => null, - 'country' => null, - 'tin' => null, - 'vaTin' => null, - 'hasTax' => false, - ], - 'lang' => 'en', - ]; + public function getConfigSchema(): Schema { + return Expect::structure([ + 'company' => Expect::structure([ + 'name' => Expect::string()->required(), + 'town' => Expect::string()->required(), + 'address' => Expect::string()->required(), + 'zip' => Expect::string()->required(), + 'country' => Expect::string()->required(), + 'tin' => Expect::string(), + 'vaTin' => Expect::string(), + 'hasTax' => Expect::bool(false), + ]), + 'lang' => Expect::string('en'), + 'template' => Expect::string(DefaultTemplate::class), + ]); + } public function loadConfiguration(): void { $builder = $this->getContainerBuilder(); - $config = $this->validateConfig($this->defaults); + $config = (array) $this->getConfig(); $builder->addDefinition($this->prefix('company')) - ->setFactory(Company::class, array_values($config['company'])); + ->setFactory(Company::class, array_values((array) $config['company'])); $builder->addDefinition($this->prefix('template')) - ->setFactory(DefaultTemplate::class) + ->setFactory($config['template']) ->setType(ITemplate::class); $builder->addDefinition($this->prefix('renderer'))