PHP访问类在另一个类里面

Wal*_*han 7 php variables global

所以我有两个这样的类:

class foo {
    /* code here */
}
$foo = new foo();
class bar {
    global $foo;
    public function bar () {
        echo $foo->something();
    }
}
Run Code Online (Sandbox Code Playgroud)

我想在所有方法栏中访问foo的方法,而不是在bar内的每个方法中声明它,如下所示:

class bar {
    public function bar () {
        global $foo;
        echo $foo->something();
    }
    public function barMethod () {
        global $foo;
        echo $foo->somethingElse();
    }
    /* etc */
}
Run Code Online (Sandbox Code Playgroud)

我也不想延长它.我尝试使用var关键字,但似乎没有用.我怎么做才能在bar的所有方法中访问其他类"foo"?

Sar*_*raz 8

你也可以这样做:

class bar {
    private $foo = null;

    function __construct($foo_instance) {
      $this->foo = $foo_instance;
    }

    public function bar () {
        echo $this->foo->something();
    }
    public function barMethod () {
        echo $this->foo->somethingElse();
    }
    /* etc, etc. */
}
Run Code Online (Sandbox Code Playgroud)

以后你可以这样做:

$foo = new foo();
$bar = new bar($foo);
Run Code Online (Sandbox Code Playgroud)

  • @John:如果他甚至不知道如何通过参数传递数据,那么说一个关于DI的人还为时过早. (4认同)
  • 仅供参考,即所谓的依赖注入 (3认同)