You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将ClassA中创建的ClassB对象传递给ClassC?

把ClassA中实例化的ClassB对象传给ClassC的实现方法

下面给你几种可行的实现方式,都是PHP里常用的依赖传递手段:

方案一:通过example方法的参数直接传入

这种方式最直接,在调用ClassC的example方法时,把ClassA实例里的ClassB对象传进去就行:

class A
{
    public ClassB $classB;

    public function __construct()
    {
        $this->classB = new ClassB();
    }
}

class C
{
    public function example(ClassB $classB)
    {
        // 这里直接使用传入的ClassB对象
        // 比如调用$classB的方法:$classB->someMethod();
    }
}

// 使用示例
$a = new A();
$c = new C();
$c->example($a->classB);

方案二:通过ClassC的构造方法注入

如果ClassC的多个方法都需要用到ClassB对象,更推荐在构造时就注入,这样不用每次调用方法都传参数:

class A
{
    public ClassB $classB;

    public function __construct()
    {
        $this->classB = new ClassB();
    }
}

class C
{
    private ClassB $classB;

    // 构造方法接收ClassB对象并保存
    public function __construct(ClassB $classB)
    {
        $this->classB = $classB;
    }

    public function example()
    {
        // 直接使用类内保存的ClassB对象
        // $this->classB->someMethod();
    }
}

// 使用示例
$a = new A();
$c = new C($a->classB);
$c->example();

方案三:通过持有ClassA实例间接获取(不推荐)

这种方式会让ClassC和ClassA产生强耦合,后续维护起来麻烦,除非特殊场景不建议用:

class A
{
    public ClassB $classB;

    public function __construct()
    {
        $this->classB = new ClassB();
    }
}

class C
{
    private A $a;

    public function __construct(A $a)
    {
        $this->a = $a;
    }

    public function example()
    {
        // 通过A实例获取ClassB对象
        $classB = $this->a->classB;
        // 后续操作$classB
    }
}

// 使用示例
$a = new A();
$c = new C($a);
$c->example();

内容的提问来源于stack exchange,提问作者Dareks21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 17:15:33