依赖注入涉及到的传承或者查找来源问题

class A {
    public function __construct(){
        //此处有办法得到是谁注入或者说调用了我么
        //因为我想在此处判断如果是B调用我的时候,我就去Bservice,如果是C调用我,我就去Cservice
    }
}

class B {
    public function __construct(A $a){
    }
}

class C {
    public function __construct(A $a){
    }
}
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1

if (get_class($this) == 'B') 这样可以获取当前调用类。

(文档的一段: 有时你可能有两个类使用了相同的接口,但你希望各自注入不同的实现)

如果你是用 lar, 使用容器上下文绑定 更好

// 当B类调用A类 解析依赖的时候 返回 "Bservice"
$this->app->when(B::class)
          ->needs(A::class)
          ->give(function () {
              return "Bservice"; // 你的Bservice
});

// 当C类调用A类 解析依赖的时候 返回 "Cservice"
$this->app->when(C::class)
          ->needs(A::class)
          ->give(function () {
              return "Cservice" // 你的Cservice
});
4年前 评论
xh_dream (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!