<?php
use bitExpert\Disco\Annotations\Bean;
use bitExpert\Disco\Annotations\Configuration;
use bitExpert\Disco\AnnotationBeanFactory;
class Foo
{
public function bar() : string
{
return 'Disco dancing';
}
}
/**
* @Configuration
*/
class DiConfig
{
/**
* @Bean
*/
public function foo() : Foo
{
return new Foo();
}
/**
* @Bean({"singleton"=false})
*/
public function specialFoo() : Foo
{
return new Foo();
}
}
// $beanFactory uses container interop
$parameters = [];
$beanFactory = new AnnotationBeanFactory(DiConfig::class, $parameters);
$foo1 = $beanFactory->get('foo');
$foo2 = $beanFactory->get('foo');
echo $foo1->bar();
dump($foo1 === $foo2);
$foo1 = $beanFactory->get('specialFoo');
$foo2 = $beanFactory->get('specialFoo');
dump($foo1 === $foo2);
true
false