v1.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace zin;
  3. require_once dirname(__DIR__) . DS . 'avatar' . DS . 'v1.php';
  4. class userAvatar extends wg
  5. {
  6. /**
  7. * @var mixed[]
  8. */
  9. protected static $defineProps = array(
  10. 'className?:string',
  11. 'style?:array',
  12. 'size?:int=32',
  13. 'circle?:bool=true',
  14. 'rounded?:string|int',
  15. 'background?:string',
  16. 'foreColor?:string',
  17. 'text?:string',
  18. 'code?:string',
  19. 'maxTextLength?:int=2',
  20. 'hueDistance?:int=43',
  21. 'saturation?:int=0.4',
  22. 'lightness?:int=0.6',
  23. 'src?:string',
  24. 'avatar?:string',
  25. 'account?:string',
  26. 'realname?:string',
  27. 'user?:array|object'
  28. );
  29. public function onAddChild($child)
  30. {
  31. if(is_object($child) && isset($child->account))
  32. {
  33. $this->props->set('user', $child);
  34. return false;
  35. }
  36. return parent::onAddChild($child);
  37. }
  38. protected function build()
  39. {
  40. list($user, $avatar, $account, $realname) = $this->prop(array('user', 'avatar', 'account', 'realname'));
  41. if(is_array($user))
  42. {
  43. $avatar = isset($user['avatar']) ? $user['avatar'] : $avatar;
  44. $account = isset($user['account']) ? $user['account'] : $account;
  45. $realname = isset($user['realname']) ? $user['realname'] : $realname;
  46. }
  47. elseif(is_object($user))
  48. {
  49. $avatar = isset($user->avatar) ? $user->avatar : $avatar;
  50. $account = isset($user->account) ? $user->account : $account;
  51. $realname = isset($user->realname) ? $user->realname : $realname;
  52. }
  53. if($avatar) $avatar .= '?v=' . uniqid(); // 给头像URL添加一个随机参数,避免浏览器缓存。
  54. return avatar
  55. (
  56. set::src($avatar),
  57. set::code($account),
  58. set::text(empty($realname) ? $account : $realname),
  59. set($this->props->skip(array('avatar', 'account', 'realname', 'user')))
  60. );
  61. }
  62. }