err = ErrCode::ok;
$resp->result = $ret == null ? ObjectInit() : $ret; # 避免出现null
$resp->ts = time();
$resp->tag = ObjectInit();
return $resp;
}
/**
* 产生服务端错误应答数据
* @param Req $req
* @param int $err
* @param string $msg 【可选】附加信息
* @return \ResponseVo
*/
public static function err($err, $msg = "") {
$resp = new Resp();
$resp->err = $err;
$resp->result = ObjectInit();
$resp->ts = time();
$resp->tag = ObjectInit();
self::addTag('errmsg', $msg);
return $resp;
}
/**
* 实例方法, 将静态变量上累积的数据转移到自己身上
*/
public function AfterProc() {
$this->tag = arr2obj(array_merge((array) $this->tag, (array) self::$ext_tag)); # 合并附加tags
self::$ext_tag = ObjectInit();
$this->events = self::$ext_events; # 合并附加events
self::$ext_events = array();
if (count($this->events) > 0) { # 对于出现event的情况下自动附带store到客户端.
if (is_array($this->result)) {
if (!array_key_exists('store', (array) $this->result)) {
$this->result['store'] = ctx()->store;
}
} else {
if (!array_key_exists('store', (array) $this->result)) {
$this->result->store = ctx()->store;
}
}
}
}
//
static $ext_events = array();
public static function AddEvent($name, $arg1, $arg2) {
self::$ext_events[] = array(
'name' => $name,
'arg1' => is_null($arg1) ? ObjectInit() : $arg1,
'arg2' => is_null($arg2) ? ObjectInit() : $arg2
);
}
//
//
static $ext_tag = null;
/**
* 向返回值添加附加数据
* @param string $name
* @param any $value
*/
public static function addTag($name, $value) {
if (null == self::$ext_tag) {
self::$ext_tag = ObjectInit();
}
self::$ext_tag->$name = $value;
}
//
}