ConsoleApp.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace KarmaFW;
  3. use \KarmaFW\Routing\Router;
  4. use \KarmaFW\Lib\Hooks\HooksManager;
  5. class ConsoleApp extends App
  6. {
  7. public static $session_user = false; // user connected with a session
  8. public static $controller = null;
  9. public static function boot()
  10. {
  11. parent::boot();
  12. if (defined('USE_HOOKS') && USE_HOOKS) {
  13. HooksManager::applyHook('consoleapp.boot.before', []);
  14. }
  15. if (defined('USE_HOOKS') && USE_HOOKS) {
  16. HooksManager::applyHook('consoleapp.boot.after', []);
  17. }
  18. }
  19. public static function routeFromArgs($argv=[])
  20. {
  21. if (! self::$booted) {
  22. self::boot();
  23. }
  24. if (defined('USE_HOOKS') && USE_HOOKS) {
  25. HooksManager::applyHook('consoleapp.route.before', []);
  26. }
  27. $bin_path = array_shift($argv);
  28. if ( ($command = array_shift($argv)) === null ) {
  29. // error: missing command parameter
  30. throw new Exception("Command not specified", 1);
  31. } else {
  32. $scripts_dir = APP_DIR . "/src/scripts";
  33. $script_filepath = $scripts_dir . '/' . $command . '.php';
  34. if (is_file($script_filepath)) {
  35. require $script_filepath;
  36. } else {
  37. throw new Exception("Script file not found", 1);
  38. }
  39. }
  40. if (defined('USE_HOOKS') && USE_HOOKS) {
  41. HooksManager::applyHook('consoleapp.route.after', []);
  42. }
  43. }
  44. }