0

假设我已经定义了几个这样的类:

abstract class ServerVars {
  public static function get($k) {
    if (empty($arr[$k])) throw new Exception('Not found');
    return $arr[$k]; // Also include error checking
  }
  public static function set($k, $v) {
    $arr[$k] = $v;
  }
  ... // Other useful methods
}

public class Session extends ServerVars {
  static $arr = $_SESSION; // !!!
  public static function destroy() {
    ...
  }
}

基本上,我只是想包装某些服务器变量,如 $_SESSION、$POST 等,以使我的代码更加模块化。但是标有的行!!!会导致错误unexpected '$_SESSION' (T_VARIABLE)。为什么会出现这个错误?有没有更好的方法来做我想要完成的事情?

4

1 回答 1

1

类变量的初始值设定项必须是常量。$_SESSION是一个变量,不一定是常数。

不要为此使用继承;这是完全不合适的。如果你坚持要上课,那应该是一个课:

class DuplicatesBuiltInFunctionality {
    public function __construct($arr) {
        $this->arr = $arr;
    }

    public function get($k) {
        if(!isset($this->arr[$k])) throw new Exception('Not found');
        return $this->arr[$k];
    }

    public function set($k, $v) {
        $this->arr[$k] = $v;
    }
}
于 2013-10-12T04:56:42.853 回答