另一个类函数中的类函数

时间:2013-11-20 18:23:07

标签: php

我是新手,我真的不知道如何做到这一点。 由于我是新手使用课程而且非常糟糕的搜索我决定在这里问。 我想要的是一个类传递给类中另一个函数的函数。

我试着将其称为如下,但它无法找到变量$b

例如:

class a {

function one() {

$b->two();

}

}

class b {

function two() {

echo "two";

}

}

$a = new a();
$b = new b();

我如何实现这一目标?

提前致谢!

4 个答案:

答案 0 :(得分:3)

您需要了解依赖注入。在这种情况下,A取决于B,因此您需要在实例化A时将其传递到A。此外,它是大写类名称的标准命名约定。它有助于提高可读性。

class A {
  public function __construct(B $B) {
    $this->B = $B;
  }
  public function one() {
    $this->B->two();
  }
}

class B {
  public function two() {
    echo "two";
  }
}

$B = new B();
$A = new A($B);
$A->one();

答案 1 :(得分:2)

在这个例子之前,有很多方法可以实现它和很多事情,只要通过学习更多,你将自己发现。顺便说一下:

class A {

    public $b;

    public function __construct(B $b)
    {
        $this->b = $b;
    }

    function one() 
    {

        $this->b->two();
    }
}

class B 
{

    function two() 
    {

        echo "two";
    }
}

$b = new B();
$a = new A($b);

$a->one();

------- ------- EDIT

在知道仍然使用构造函数之后如果你无法修改它,你需要使用所谓的 setter mutator 方法。

class A {

    public $b;

    public function setB(B $b)
    {
        $this->b = $b;
    }
    ...
}

class B {

    ...
}

$b = new B();
$a = new A();

$a->setB($b);
$a->one();

答案 2 :(得分:0)

你不能那样做..

你应该读到的是:PHP中的“继承”。

基本上这样做可以让你对它有所了解:

class A extends B {
    function one() {
        $this->two();
    }
}

class B {
    function two() {
        echo "two";
    }
}

答案 3 :(得分:0)

class a {
    function one() {
        $b = new b();
        $b->two();
    }
}

class b {
    function two() {
        echo "two";
    }
}

$a = new a();
$a->one();

输出:

two