DiyViewUtils.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\event;
  11. use ReflectionClass;
  12. use ReflectionException;
  13. /**
  14. * 自定义模板组件渲染
  15. */
  16. class DiyViewUtils
  17. {
  18. /**
  19. * 行为扩展的执行入口必须是run
  20. * @param $data
  21. * @return mixed | void
  22. * @throws ReflectionException
  23. */
  24. public function handle($data)
  25. {
  26. $port = [ 'app', 'addon' ];
  27. if (!empty($data[ 'name' ])) {
  28. $class_name = '';
  29. $is_exist = false;
  30. foreach ($port as $k => $v) {
  31. if (!empty($data[ 'addon_name' ])) {
  32. $class_name = $v . '\\' . $data[ 'addon_name' ] . '\\component\\controller\\' . $data[ 'name' ];
  33. } else {
  34. $class_name = $v . '\\component\\controller\\' . $data[ 'name' ];
  35. }
  36. if (class_exists($class_name)) {
  37. $is_exist = true;
  38. break;
  39. }
  40. }
  41. if ($is_exist) {
  42. $class = new ReflectionClass($class_name);
  43. $instance = $class->newInstanceArgs();
  44. return $instance->design();
  45. } else {
  46. var_dump("not found:" . $class_name);
  47. }
  48. }
  49. }
  50. }