我不想在每个方法上使用相同代码的多行,而是设置(引导/初始化)方法来定义公共值等。然后,在需要时调用该方法。
最初,我有这样的事情:
<?php
class boot {
private static $root = $_SERVER['DOCUMENT_ROOT'] . '/';
public static function load() {
return self::$root;
}
}
$test = boot::load();
echo $test;
?>
但是我会收到一个错误,例如:解析错误:语法错误,意外的T_VARIABLE ......
所以,我把它改为:
<?php /* Class Bootstrap (Boot for short) */
class boot {
private static $base = null;
private static $root = null;
private static function boot(){
self::$base = $_SERVER['DOCUMENT_ROOT'] . '/';
}
public static function load() {
self::boot();
return self::$base;
}
}
$test = boot::load();
echo $test;
?>
然后我得到了这个:致命错误:构造函数boot :: boot()不能是静态的......
所以我求助于:
<?php
class boot {
private static $base = null;
private static $root = null;
private function boot(){
$this->base = $_SERVER['DOCUMENT_ROOT'] . '/';
}
public static function load() {
$this->boot();
return self::$base;
}
}
$test = boot::load();
echo $test;
?>
但是我仍然在发错,致命错误:在不在对象上下文中时使用$ this 我尝试了不同的东西,但我没有想法。
答案 0 :(得分:3)
您不能在静态上下文中使用$ this。
总结上述答案你必须使用$ this 要访问属于当前Object(非静态)的成员,但使用self ::来访问该类的静态成员。
您可以将所有功能设置为静态并使用self ::而不是$ this-&gt;
答案 1 :(得分:1)
尝试以下
class boot {
private static $base = null;
private static $root = null;
public static function load() {
self::$base = $_SERVER['DOCUMENT_ROOT'] . '/';
return self::$base;
}
}
$test = boot::load();
echo $test;