如何从另一个类调用非静态方法

Be0*_*ulf 2 php oop

这是我的第二个问题,尽管我自己回答了上一个问题。不管怎样,我有一个 OOP 的基本问题,即如何从另一个类调用非静态方法。示例:我们在文件 A.class.php 中有一个名为 A 的类

class A {

    public function doSomething(){
     //doing something.
    }

}
Run Code Online (Sandbox Code Playgroud)

另一个文件 B.class.php 上有一个名为 B 的第二个类

require_once 'A.class.php';

class B {

    //Call the method doSomething() from  the class A.

}
Run Code Online (Sandbox Code Playgroud)

我想现在一切都清楚了。如何:从类 A 调用 doSomething() 方法?

new*_*rey 5

B 类需要 A 类的对象来调用该方法:

class B {
    public function doStuff() {
        $a = new A();
        $a->doSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以在 B 外部创建 A 的实例,并将其传递到 B 的构造函数中以创建对其的全局引用(或将其传递给单个方法,您可以选择):

class B {
    private $a = null;
    public function __construct($a) {
        $this->a = $a;
    }
    public function doStuff() {
        $this->a->doSomething();
    }
}

$a = new A();
$b = new B($a);
Run Code Online (Sandbox Code Playgroud)

  • @JvdBerg 由于这个答案的几乎所有帖子看起来都很相似,如果您认为*每个人*都复制了您的帖子,我不会感到惊讶。更好的是我的“已回答”时间戳是在你之前的,所以我应该对你做出同样无知的评论吗? (5认同)
  • @JvdBerg 如果您担心重复累积,请尝试回答可能获得更大奖励的概念性问题。除非你想在接下来的几个月里吃饭、睡觉和呼吸,否则任何人都可以回答的简单一次性问题并不是正确的选择。 (3认同)