Object_ext.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. namespace loyalsoft;
  3. /**
  4. * 扩展对象的一些通用方法
  5. * @version
  6. * 1.0.1 改名, PHP 7以后的语法中已经将Object作为关键字 --gwang 2017年8月2日
  7. * 1.0.0 Created at 2017-3-28. by --gwang
  8. * @author gwang (mail@wanggangzero.cn)
  9. * @copyright ? 2017-3-28, SJZ LoyalSoft Corporation & gwang. All rights reserved.
  10. */
  11. class Object_ext {
  12. /**
  13. * 默认构造函数,能够智能提取关联数组或者是object中的字段进行初始化.
  14. * Ps. 不会进行递归类型检查, php的serilize函数也没有附带字段的类型信息
  15. */
  16. function __construct($arg = null) {
  17. if (func_num_args() != 1 || is_null($arg)) {
  18. return;
  19. }
  20. $para = is_array($arg) ? $arg : (array) $arg; # 关联数组
  21. $vars = get_class_vars(get_class($this)); # 后期绑定,获得实例的实际类名称=>属性数组
  22. foreach ($vars as $name => $value) {
  23. $this->$name = isset($para[$name]) ? $para[$name] : $value; # 取参数中的或者默认值
  24. }
  25. }
  26. public function __toString() {
  27. return $this->toString();
  28. }
  29. public function toString() {
  30. $str = JsonUtil::encode($this);
  31. return $str;
  32. }
  33. }