Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 包装服务器变量数组时出现问题(例如,$\u POST,$\u GET)_Php_Arrays_Session_Post_Get - Fatal编程技术网

Php 包装服务器变量数组时出现问题(例如,$\u POST,$\u GET)

Php 包装服务器变量数组时出现问题(例如,$\u POST,$\u GET),php,arrays,session,post,get,Php,Arrays,Session,Post,Get,假设我定义了两个类,如下所示: 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

假设我定义了两个类,如下所示:

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() {
    ...
  }
}

基本上,我只是尝试包装某些服务器变量,如$\u SESSION、$POST等,以使代码更模块化。但是标有
的行导致错误
意外的“$\u会话”(T\u变量)
。为什么会发生这种错误?还有没有更好的方法来完成我想要完成的任务呢?

类变量的初始值设定项必须是常量<代码>$\u会话
是一个变量,不一定是常量

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

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;
    }
}

请参考:为什么不合适?在我看来,这似乎是一个有用的抽象概念。按照您的方式执行,我必须创建实例,这似乎不正确,因为整个程序只需要一个实例(我正试图避免使用单例模式)。我想知道的是如何让我的特定代码工作。@Intredasting:不,整个程序不需要一个实例。您需要一个用于
$\u会话
,一个用于
$\u POST
(我假设您计划对
$\u GET
$\u COOKIE
)执行相同的操作。但是如果我最后说$POST=新的重复多功能($\u POST),并且我在一个函数中使用它,然后在我需要的其他脚本中定义的另一个函数中,我将无法使用$post变量;我需要实例化另一个。@Intredasting:使用
global
关键字。