我有几个类,在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