我对类很陌生,我真的不知道如何做到这一点。由于我刚开始使用类,而且搜索能力很差,所以我决定在这里提问。我想要的是一个类中的函数传递给类中的另一个函数。
我试着如下调用它,但它找不到变量$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();
-------编辑-------
在知道仍然使用构造函数并且无法修改它之后,您需要使用所谓的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();
你不能那样做。。
您应该了解的是: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