|
@@ -6,6 +6,8 @@ namespace loyalsoft;
|
|
|
* 扩展对象的一些通用方法
|
|
|
* 使用方法: $var = new XX($obj); ... 用完后注意进行回存.(相当于克隆一个原始对象,若需覆盖原始对象记得回存操作)
|
|
|
* @version
|
|
|
+ * 1.0.3 增加了Json()和MD5()方法,用于计算对象的摘要,方便与客户端或者存储端进行校验. --gwang 2022.5.31
|
|
|
+ * 1.0.2 增加了LoadFrom()方法. --gwang 2020.4.24
|
|
|
* 1.0.1 改名, PHP 7以后的语法中已经将Object作为关键字 --gwang 2017年8月2日
|
|
|
* 1.0.0 Created at 2017-3-28. by --gwang
|
|
|
* @author gwang (mail@wanggangzero.cn)
|
|
@@ -18,7 +20,7 @@ class Object_ext {
|
|
|
* Ps. 不会进行递归类型检查, php的serilize函数也没有附带字段的类型信息
|
|
|
*/
|
|
|
function __construct($arg = null) {
|
|
|
- if (func_num_args() != 1 || is_null($arg)) {
|
|
|
+ if (func_num_args() != 1 || is_null($arg)) { # 若参数为null,无特殊操作
|
|
|
return;
|
|
|
}
|
|
|
$para = is_array($arg) ? $arg : (array) $arg; # 关联数组
|
|
@@ -33,26 +35,42 @@ class Object_ext {
|
|
|
* @param array/Object $obj
|
|
|
*/
|
|
|
public function LoadFrom($obj) {
|
|
|
- if (func_num_args() != 1 || is_null($obj)) {
|
|
|
+ if (func_num_args() != 1 || is_null($obj)) { # 防御: 参数数量不对
|
|
|
die("too many args or arg obj was null!");
|
|
|
}
|
|
|
$para = is_array($obj) ? $obj : (array) $obj; # 转关联数组
|
|
|
$vars = get_class_vars(get_class($this)); # 后期绑定,获得实例的实际类名称=>属性数组
|
|
|
foreach ($vars as $name => $value) {
|
|
|
if (isset($para[$name])) {
|
|
|
- $this->$name = $para[$name]; # 取参数中的或者默认值
|
|
|
+ $this->$name = $para[$name]; # 取参数中的或者默认值
|
|
|
}
|
|
|
}
|
|
|
return $this;
|
|
|
}
|
|
|
|
|
|
- public function __toString() {
|
|
|
+ public function __toString() { # 用json_encode覆盖下toString()方法
|
|
|
return $this->toString();
|
|
|
}
|
|
|
|
|
|
- public function toString() {
|
|
|
- $str = JsonUtil::encode($this);
|
|
|
+ /**
|
|
|
+ * @return 将自身数据序列化为json串.
|
|
|
+ */
|
|
|
+ public function Json() {
|
|
|
+ return JsonUtil::encode($this);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function toString() { # 还没想好要不要留一个显式的toString()方法
|
|
|
+ $str = $this->Json();
|
|
|
return $str;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param bool $lower 是否返回小写字符串,默认值false, 返回大写字符串
|
|
|
+ * @return string 计算自身数据序列化为json串后的MD5值(大写16进制)
|
|
|
+ */
|
|
|
+ public function MD5($lower = false) {
|
|
|
+ $str = $this->Json();
|
|
|
+ return $lower ? md5($str) : strtoupper(md5($str));
|
|
|
+ }
|
|
|
+
|
|
|
}
|