Context.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace Tools;
  3. /**
  4. * Cms context
  5. * Contains all website informations
  6. * Will be passed to themes files and to modules
  7. **/
  8. class Context
  9. {
  10. /**
  11. * @var \Tools\Hooks $hookManager
  12. * /core/tools/Hooks.php
  13. * allow triggering hooks and registers module's endpoints
  14. * Can be accessed read-only via $instance->hookManager
  15. **/
  16. private $hookManager;
  17. /**
  18. * @var \Tools\ModuleManager $moduleManager
  19. * /core/tools/ModuleManager.php
  20. * load all active modules and contains informations about them
  21. * Can be accessed read-only via $instance->moduleManager
  22. **/
  23. private $moduleManager;
  24. /**
  25. * @var \Tools\Router $router
  26. * /core/tools/Router.php
  27. * Contains information about directories and paths
  28. * Allow user to generate links
  29. * Can be accessed read-only via $instance->router
  30. **/
  31. private $router;
  32. /**
  33. * TODO
  34. * @var \Tools\Cart $cart
  35. * /core/tools/Cart.php
  36. * Not defined yet
  37. * Can be accessed read-only via $instance->cart
  38. **/
  39. private $cart;
  40. /**
  41. * TODO
  42. * @var \Tools\User $user (entity ?)
  43. * /core/tools/User.php
  44. * Can be accessed read-only via $instance->user
  45. **/
  46. private $user;
  47. /**
  48. * Create context from $_SERVER environment
  49. * and initialize all data
  50. **/
  51. public function __construct()
  52. {
  53. $this->hookManager = new Hooks($this);
  54. $this->router = new Router($this);
  55. if (!\Entity\ModelBase::init())
  56. {
  57. @require_once(getcwd().'/core/setup/index.php');
  58. die;
  59. }
  60. $this->router->init();
  61. $this->moduleManager = new ModuleManager($this);
  62. $this->hookManager->trigger("routerSetup");
  63. $this->router->serveUrl();
  64. }
  65. /**
  66. * Getter function
  67. **/
  68. public function __get($key)
  69. {
  70. switch ($key)
  71. {
  72. case "router": return $this->router; break;
  73. case "cart": return $this->cart; break;
  74. case "user": return $this->user; break;
  75. case "moduleManager": return $this->moduleManager; break;
  76. case "hookManager": return $this->hookManager; break;
  77. }
  78. throw new \Exception("Cannot access attribute {$key}");
  79. }
  80. }