从子对象调用对象方法(PHP)
假设类B的对象是类A的属性。如何从类B的对象方法调用类A的对象方法?如果不传递对象链接,什么是好的解决方案 谢谢 下面是代码示例:从子对象调用对象方法(PHP),php,oop,Php,Oop,假设类B的对象是类A的属性。如何从类B的对象方法调用类A的对象方法?如果不传递对象链接,什么是好的解决方案 谢谢 下面是代码示例: 您可以使用静态函数 public static function f2{ echo 'hello!'; } f3定义为 function f3(){ A::f2(); } 然而,这最终可能不是您想要的解决方案。查看更多信息。访问该实例函数的唯一方法是将其作为依赖项注入B对象。您可以将其注入构造函数中,如下所示: <?php class
您可以使用静态函数
public static function f2{
echo 'hello!';
}
f3定义为
function f3(){
A::f2();
}
然而,这最终可能不是您想要的解决方案。查看更多信息。访问该实例函数的唯一方法是将其作为依赖项注入
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();
我认为您唯一的方法是将$this
传递给f3()
。阅读依赖项注入
。您对var b的使用代码>告诉我您已经习惯于使用旧的PHP4代码。PHP5提供了巨大的新可能性和简单的设计模式集成!其他人由于某种原因无法发布此问题的答案吗?除非函数引用了当前实例。是的,我使用链接更新了答案以使其更清晰。根据f2()
的功能,这可能会起作用:-)谢谢!另一个类似的问题(与上面的示例分开):例如,函数f()是从函数f1()和f2()调用的。如何找出调用f()的函数?像函数f(){/*echo callerFunctionName();*/}一样,您不想向f()传递任何内容吗?最简单的解决方案是将字符串传递给f(var name){echo name;}
,然后像调用f1(){f(“echo this”);}
<?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();