HookService.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. /**
  3. *
  4. * @author: xaboy<365615158@qq.com>
  5. * @day: 2017/11/24
  6. */
  7. namespace crmeb\services;
  8. class HookService
  9. {
  10. /**
  11. * 监听有返回结果的行为
  12. * @param $tag
  13. * @param $params
  14. * @param null $extra
  15. * @param bool $once
  16. * @return mixed
  17. */
  18. public static function resultListen($tag, $params, $extra = null, $once = false,$behavior = null)
  19. {
  20. self::beforeListen($tag,$params,$extra,false,$behavior);
  21. return self::listen($tag,$params,$extra,$once,$behavior);
  22. }
  23. /**
  24. * 监听后置行为
  25. * @param $tag
  26. * @param $params
  27. * @param null $extra
  28. */
  29. public static function afterListen($tag, $params, $extra = null, $once = false, $behavior = null)
  30. {
  31. try{
  32. return self::listen($tag.'_after',$params,$extra,$once,$behavior);
  33. }catch (\Exception $e){}
  34. }
  35. public static function beforeListen($tag,$params,$extra = null, $once = false, $behavior = null)
  36. {
  37. try{
  38. return self::listen($tag.'_before',$params,$extra,$once,$behavior);
  39. }catch (\Exception $e){}
  40. }
  41. /**
  42. * 监听行为
  43. * @param $tag
  44. * @param $params
  45. * @param null $extra
  46. * @param bool $once
  47. * @return mixed
  48. */
  49. public static function listen($tag, $params, $extra = null, $once = false, $behavior = null)
  50. {
  51. // if($behavior && method_exists($behavior,Loader::parseName($tag,1,false))) self::add($tag,$behavior);
  52. // return Hook::listen($tag,$params,$extra,$once);
  53. }
  54. /**
  55. * 添加前置行为
  56. * @param $tag
  57. * @param $behavior
  58. * @param bool $first
  59. */
  60. public static function addBefore($tag, $behavior, $first = false)
  61. {
  62. self::add($tag.'_before',$behavior,$first);
  63. }
  64. /**
  65. * 添加后置行为
  66. * @param $tag
  67. * @param $behavior
  68. * @param bool $first
  69. */
  70. public static function addAfter($tag, $behavior, $first = false)
  71. {
  72. self::add($tag.'_after',$behavior,$first);
  73. }
  74. /**
  75. * 添加行为
  76. * @param $tag
  77. * @param $behavior
  78. * @param bool $first
  79. */
  80. public static function add($tag, $behavior, $first = false)
  81. {
  82. Hook::add($tag,$behavior,$first);
  83. }
  84. }