如何将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
相关产品推荐
相关产品推荐

