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

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

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

class C {
    public function __construct(A $a){
    }
}
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 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年前

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