我有一些在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();
提前致谢
答案 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