通过另一个类中的$variable访问class


Accessing class through $variable within another class?

我有几个类,在index.php上初始化,如下所示:

<?php
require_once('./classes/core.class.php');
require_once('./classes/forum.class.php');
$core = new core();
$forum = new forum();
?>

有没有办法在$论坛中使用$core ?我可以用core::functionName(),但不能用$core->functionName()

类是:

<?php
class forum{
    public function functionName(){

我可以通过在每个函数中重新定义类来访问它

public function functionName(){
    $core = new core();

Thanks in advance

您可以将核心对象传递给论坛类的构造函数,并将其作为成员存储。

$forum = new forum($core);

class forum {
  protected $core = null;
  public function __construct(core $core) {
    $this->core = $core;
  }
  public function foo() {
    $this->core->foo('forum');
  }
}

还有其他方法可以使一个对象在另一个对象中可访问,但这是一个更简单但可行的解决方案。
见https://en.wikipedia.org/wiki/Dependency_injection

你可以注入它,看这个例子

class forum {
    public function hello() {
        return "Hello";
    }
}
class core {
    private $forum;
    public function setForum($forum) {
        $this->forum = $forum;
    }
    public function helloFromForum() {
        echo $this->forum->hello();
    }
}
$f = new forum();
$c = new core();
$c->setForum($f);
$c->helloFromForum();

类似的如果你喜欢框架,它是Zend Registry http://framework.zend.com/manual/en/zend.registry.html