通过$ variable在另一个类中访问类?

时间:2011-12-30 13:35:33

标签: php class global

我有一些在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();

提前致谢

2 个答案:

答案 0 :(得分:3)

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

$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

答案 1 :(得分:0)

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

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