1 回答
TA贡献1796条经验 获得超7个赞
你应该在你的应用程序开始的时候实例化你的容器(想想一个引导类,或者甚至在 index.php 本身的顶部,考虑一个非常简单的应用程序),因为你需要在所有后续操作之前准备好容器服务的实例化。
在容器实例化之前唯一可能执行的其他事情是与配置相关的那些,因为容器正常工作通常需要这些(配置参数、PSR-4 自动加载配置等)。
例如,假设您有一个称为MyController扩展抽象类的类AbstractBaseController。
然后,例如,在 index.php 上,您可以实例化您的容器和控制器:
//index.php
$container = new Container();
$controller = $container->get('namespace\of\MyController');
$controller->render();
当您这样做时,来自构造函数的所有依赖项都将由容器库的自动装配模块处理。
在实际应用中,控制器的实例化通常在路由器内部处理,路由器将 URL 地址、方法和参数映射到容器要加载的不同类。
自动装配的一个经验法则是,您永远不能再new namespace\of\MyController()直接调用,因为手动实例化它需要您传递每个构造函数依赖项(因此您并没有真正使用自动装配功能)。实例化它的正确方法始终是使用$container->get('namespace\of\MyController').
- 1 回答
- 0 关注
- 239 浏览
添加回答
举报
