我是新手,我真的不知道如何做到这一点。 由于我是新手使用课程而且非常糟糕的搜索我决定在这里问。 我想要的是一个类传递给类中另一个函数的函数。
我试着将其称为如下,但它无法找到变量$b
例如:
class a {
function one() {
$b->two();
}
}
class b {
function two() {
echo "two";
}
}
$a = new a();
$b = new b();
我如何实现这一目标?
提前致谢!
答案 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