这是我项目的主要类,我使用数组来存储类(不确定这是否是最好的方法),但是当使用下面的行...
$this->getController("config")->loadConfiguration();
它实际上没有加载配置?当我在$ this->类中访问它而不是getController函数时,它说它是空的?
我也得到这个错误..(编辑) 致命错误:在非对象上调用成员函数loadConfiguration()
这是我的全班:
<?php
defined("SECURE") or exit('Please define SECURE keyword to continue.');
class miracle
{
//Usage: $this->getController("test")->run();
private $classes;
public function __construct()
{
$classes = array();
}
public function run()
{
$this->loadClasses();
$this->getController("config")->loadConfiguration();
}
public function getController($c)
{
return $classes[$c];
}
private function loadClasses()
{
$this->classes["template"] = new template();
$this->classes["config"] = new config();
}
}
?>
答案 0 :(得分:4)
__constructor
和getController
方法中出现错误:
[...]
private $classes;
public function __construct()
{
$this->classes = array();
}
[...]
public function getController($c)
{
return $this->classes[$c];
}
答案 1 :(得分:0)
你需要回复:
public function getController($c)
{
return $this->classes[$c];
}
您也应该在构造函数中使用$ this-&gt;类。
答案 2 :(得分:0)
问题在于此代码
$this->classes["template"] = new template();
$this->classes["config"] = new config();
您正在尝试创建不存在的类的新对象。 你可以像这样使用stdClass
$this->classes["template"]= new stdClass();
$this->classes["template"]->name='template';
答案 3 :(得分:0)
快速查看代码,使用给定的行永远不会调用loadClasses()
函数,假设之前没有调用过,则类永远不会加载到数组中。
尝试这样称呼:
$this->loadClasses()->getController("config")->loadConfiguration();
除此之外,你的函数getController()
需要返回类范围的变量,如下所示:
public function getController($c)
{
return $this->classes[$c];
}
同样的改变也应该对你的类构造函数。
这一切都假设类template
和config
在项目的其他地方定义,包含在当前命名空间中,并且在当前命名空间中可用。