说B类的对象是A类的属性。怎么能从B类对象的方法调用A类对象的方法?没有传递对象链接会有什么好处?
谢谢!
这里是代码示例:
class A{
var $b;
function __construct(){
$this->b = new B();
}
function f1(){
$this->b->f3();
}
function f2(){
echo 'hello!';
}
}
class B{
function f3(){
// call f2() method in object $obj(not new A())
}
}
$obj = new A();
$obj->f1();
答案 0 :(得分:1)
您可以使用静态功能
public static function f2{
echo 'hello!';
}
将f3定义为
function f3(){
A::f2();
}
然而,这可能不是您想要的最终解决方案。查看更多信息here。
答案 1 :(得分:1)
您可以访问该实例的函数的唯一方法是将其作为依赖项注入B
对象。您可以在构造函数中注入它,如下所示:
<?php
class A {
protected $b;
public function __construct() {
$this->b = new B($this);
}
public function f1() {
$this->b->f3();
}
public function f2() {
echo 'hello!';
}
}
class B {
protected $a;
public function __construct($a) {
$this->a = $a;
}
public function f3() {
$this->a->f2();
}
}
$obj = new A();
$obj->f1();