2011-12-30 47 views
1

我有几个班,上发起的index.php,像这样:

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

有没有办法使用$论坛内$核心是什么?我可以通过使用core::functionName()而不是$core->functionName()来完成。

的类别是:

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

我可以提前再次定义每个函数内的类

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

感谢访问

+0

你是什么意思''内$ forum' $ core' ?用你提供的代码,'$ core-> functionName()'应该可以正常工作。 '$ forum'在哪里起作用? – 2011-12-30 13:36:52

+0

我给出的例子应该是论坛,而不是核心。现在更新它。 – Peter 2011-12-30 13:43:39

回答

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

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公司注册http://framework.zend.com/manual/en/zend.registry.html