IPC.class.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace KIF\Core;
  3. use KIF\Core\Config;
  4. use Exception;
  5. /**
  6. *
  7. * In Process Call的缩写,即 进程内调用
  8. * 目的:
  9. * 1、保护上下文环境
  10. * 2、简化调用代码
  11. * 使用场景:
  12. * 支持在任何地方调用基于KIF框架的app。
  13. * @author husserlgao
  14. *
  15. */
  16. class IPC {
  17. /**
  18. *
  19. * 调用
  20. * @param string $conf_file 要调用的app类的配置文件
  21. * @param callback $callback 回调执行的函数
  22. */
  23. static public function call($callback, $conf_file) {
  24. # 尝试保存调用前的配置
  25. try {
  26. $pre_app_conf_path = Config::getInstance()->get('conf_path');
  27. } catch (Exception $e) {
  28. $pre_app_conf_path = false;
  29. }
  30. Config::load($conf_file);
  31. $callback();
  32. # 恢复到调用前的应用配置
  33. if ($pre_app_conf_path) {
  34. Config::load($pre_app_conf_path);
  35. }
  36. }
  37. /**
  38. *
  39. * 调用!!!这是个临时的方法,只因没有时间去把调call的地方改过来。
  40. * @param string $conf_file 要调用的app类的配置文件
  41. * @param callback $callback 回调执行的函数
  42. */
  43. static public function call2($callback, $conf_file) {
  44. # 尝试保存调用前的配置
  45. try {
  46. $pre_app_conf_path = Config::getInstance()->get('conf_path');
  47. } catch (Exception $e) {
  48. $pre_app_conf_path = false;
  49. }
  50. Config::load($conf_file);
  51. $callback();
  52. # 恢复到调用前的应用配置
  53. if ($pre_app_conf_path) {
  54. Config::load($pre_app_conf_path);
  55. }
  56. }
  57. }