从子对象调用对象方法(PHP)

时间:2014-05-05 17:14:06

标签: php oop

说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();

2 个答案:

答案 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();