/** * create injector instance * * @param string $environment optional * @return \stubbles\ioc\Injector */ private function createInjector($environment = 'PROD') : Injector { $binder = new Binder(); $binder->bindProperties($this->properties, $environment); return $binder->getInjector(); }
/** * @test * @since 4.1.3 */ public function propertyBindingUsedWhenParamHasTypeHintButIsAnnotated() { try { $binder = new Binder(); $properties = new Properties(['config' => ['example.password' => 'somePassword']]); $binder->bindProperties($properties, 'PROD'); $example = $binder->getInjector()->getInstance(Example::class); assert($example->password, isInstanceOf(Secret::class)); } finally { // ensure all references are removed to clean up environment unset($properties); $example->password = null; unset($example); unset($binder); gc_collect_cycles(); } }