Container 容器
Container 通过Runtime实例化。 并注入到Runtime创建的ApplicationBase实例中,作为Application的核心机制存在。
Container的作用
- 完成类在容器内的定义、自动创建和存储,并可通过类名或者别名获取唯一实例。
- 通过参数注入和自动注解,可以轻松获取各种已在容器内注册的类实例。
容器的注入有三种方式
- 创建实例时,通过构造函数注入参数
- 通过invoke委托调用成员函数,并注入参数
- 通过自动注解@autowired方式,在创建实例后,@autowired自动注入参数,并运行注解了@autowired的成员函数。
参数注入的类型,必须在容器内有定义或者已经注册
/**
* @autowired 标识该类无需通过Definition定义该类创建实例的方式,即可自动创建实例
*
*/
class Bootstrap
{
/**
*
* @autowired 自动注解的方式,自动注入。
*/
private ApplicationBase $app;
/**
* 通过构造函数即可从容器中查找符合类型的类实例注入。
*/
public function __construct(ContainerInterface $container)
{
}
/**
* @autowired 自动注解该成员函数,在实例化后自动调用,并在调用时从容器中寻找符合类型实例注入。
*/
public function init(ApplicationBase $app)
{
}
}