### 默认方法 * * * * * 默认由 IOC 容器托管的对象都会被添加上两个方法; | 方法|含义 | | --- | --- | | _initialize | 初始化方法 | | _prepared | 初始化完成方法 | _initialize::可以注入多个任意你需要的对象 实例: ~~~ class UserService{ /** * @var Connection */ private $connection; public function _initialize(Connection $connection) { $this->connection = $connection; } public function _prepared(){ if($this->connection){ //这里connection 已有值 } } } ~~~ ### 复杂实例 * * * * * 下面的实例正式项目不一定能遇到,但是这里可以看出 AService,BService的相互依赖关系和如何进行AService,BService的充分解耦 这里为了方便没有使用接口 ~~~ class AService{ /** * @var BService */ private $bService; public function _initialize(BService $bService){ $this->bService=$bService; } public function test(){ $this->bService->write(); } public function xxx(){ echo 'AService的 xxx 方法被调用'; } } class BService{ /** * @var AService */ private $aService; public function _initialize(AService $aService){ $htis->aService=$AService; } public function write(){ echo 'BService write 方法被调用'; $this->aService->xxx(); } } //使用 function test(){ $a=Ioc::get(AService::class); $a->test(); } ~~~ 有兴趣的可以试下 > 思考1: 如果不在 IOC 容器内如何实现写上面的实例(只能有两个对象哦 别出现 A 每次都 new 哦) > 思考2: 为什么有 _prepared 方法