好的,我坚持这个,为什么我不能得到我需要的东西?
class config
{
private $config;
# Load configurations
public function __construct()
{
loadConfig('site'); // load a file with $cf in it
loadConfig('database'); // load another file with $cf in it
$this->config = $cf; // $cf is an array
unset($cf);
}
# Get a configuration
public static function get($tag, $name)
{
return $this->config[$tag][$name];
}
}
我得到了这个:
Fatal error: Using $this when not in object context in [this file] on line 22 [return $this->config[$tag][$name];]
我需要以这种方式调用方法:config::get()
...
答案 0 :(得分:2)
public static function get
需要
public function get
您不能在静态方法中使用$this
。
<强> EDITED 强>
我能做到这一点,但我不确定它是否适合你。
class config
{
static private $config = null;
# Load configurations
private static function loadConfig()
{
if(null === self::$config)
{
loadConfig('site'); // load a file with $cf in it
loadConfig('database'); // load another file with $cf in it
self::$config = $cf; // $cf is an array
}
}
# Get a configuration
public static function get($tag, $name)
{
self::loadConfig();
return self::$config[$tag][$name];
}
}
答案 1 :(得分:1)
问题在于您 Using $this when not in object context
...将方法声明为静态会删除在方法中使用$this
- 引用的可能性。
答案 2 :(得分:0)
静态方法中没有$this
引用,因为它们属于类。静态方法只能访问静态成员,因此如果get()
是静态方法很重要,请使$this->config
成为静态成员并return self::$config[$tag][$name]
。但是,static关键字使得方法可以在没有类实例的情况下访问,我建议将get()
设置为非静态,或者使类成为单例(取决于您希望如何使用它)。