InternalHooksWrapper.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace ModulesGarden\Servers\ProxmoxCloudVps\Core\Hook;
  3. use ModulesGarden\Servers\ProxmoxCloudVps\Core\Hook\Interfaces\InternalHook;
  4. /**
  5. * This class is used to manage app(module) internal hooks
  6. */
  7. class InternalHooksWrapper
  8. {
  9. public function runInternalHook($name = null, $params = [])
  10. {
  11. if (!$name)
  12. {
  13. return $params;
  14. }
  15. $hookInstance = $this->getHookInstance($name, $params);
  16. if (!$hookInstance)
  17. {
  18. return $params;
  19. }
  20. try
  21. {
  22. $newParams = $hookInstance->execute();
  23. return $newParams;
  24. }
  25. catch (\Exception $exception)
  26. {
  27. $this->logException($exception);
  28. return $params;
  29. }
  30. }
  31. public function getHookInstance($name = null, $params = [])
  32. {
  33. $fullInstanceName = '\ModulesGarden\Servers\ProxmoxCloudVps\App\Hooks\InternalHooks\\' . $name;
  34. if (!class_exists($fullInstanceName))
  35. {
  36. return false;
  37. }
  38. try
  39. {
  40. $instance = new $fullInstanceName($params);
  41. }
  42. catch (\Exception $exception)
  43. {
  44. $this->logException($exception);
  45. return false;
  46. }
  47. if (!is_callable([$instance, 'execute']) || !($instance instanceof InternalHook))
  48. {
  49. return false;
  50. }
  51. return $instance;
  52. }
  53. public function logException($exception)
  54. {
  55. //todo
  56. }
  57. }