Example #1
0
 /**
  * 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();
     }
 }