另一个类函数中的类函数


Class function in another class function

我对类很陌生,我真的不知道如何做到这一点。由于我刚开始使用类,而且搜索能力很差,所以我决定在这里提问。我想要的是一个类中的函数传递给类中的另一个函数。

我试着如下调用它,但它找不到变量$b

例如:

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

我该如何做到这一点?

提前感谢!

您需要了解依赖注入。在这种情况下,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();

在这个例子之前,有很多方法可以实现这一点,还有很多话要说,只需学习更多,你就可以自己发现。顺便说一句:

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

-------编辑-------

在知道仍然使用构造函数并且无法修改它之后,您需要使用所谓的settermutator方法。

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

你不能那样做。。

您应该了解的是:PHP中的"继承"。

基本上这样做会让你对它有一些了解:

class A extends B {
    function one() {
        $this->two();
    }
}
class B {
    function two() {
        echo "two";
    }
}
class a {
    function one() {
        $b = new b();
        $b->two();
    }
}
class b {
    function two() {
        echo "two";
    }
}
$a = new a();
$a->one();

输出:

two