PageRenderTime 37ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/Framework/Core/Request.php

https://gitlab.com/Erdrix/overviewCompanies
PHP | 218 lines | 89 code | 30 blank | 99 comment | 10 complexity | 345705e37c7510978dde516d5a851e58 MD5 | raw file
  1. <?php
  2. class Request
  3. {
  4. //////////////////////////
  5. // Attributs
  6. /////////
  7. /**
  8. * Uri demandé par l'utilisateur
  9. * @var string
  10. */
  11. private $uri;
  12. /**
  13. * Route demandée par l'utilisateur
  14. * @var string
  15. */
  16. private $route;
  17. /**
  18. * Prefix de la route
  19. * @var string
  20. */
  21. private $prefix;
  22. /**
  23. * Methode utilisée lors de la requête
  24. * @var string
  25. */
  26. private $method;
  27. /**
  28. * Action utilisée lors de la requête
  29. * @var string
  30. */
  31. private $action;
  32. /**
  33. * Variable serveur
  34. * @var array
  35. */
  36. private $server;
  37. /**
  38. * Variable de session
  39. * @var array
  40. */
  41. private $session;
  42. //////////////////////////
  43. // Constructeur
  44. /////////
  45. public function __construct()
  46. {
  47. $conf = Conf::get('global');
  48. $route = isset($_GET['route']) ? (!empty($_GET['route']) ? $_GET['route'] : $conf['default']['route']) : $conf['default']['route'];
  49. $url = explode('/', trim($route, '/'));
  50. $this->server = $_SERVER;
  51. $this->method = ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('HTTP_X_HTTP_METHOD',
  52. $_SERVER)) ? $_SERVER['HTTP_X_HTTP_METHOD'] : $_SERVER['REQUEST_METHOD'];
  53. $this->prefix = isset($url[0]) ? array_shift($url) : '';
  54. $this->action = implode('/', $url);;
  55. $this->route = '/' . $this->action;
  56. $this->uri = '/' . $route;
  57. }
  58. //////////////////////////
  59. // Public Methods
  60. /////////
  61. /**
  62. * Retourne l'ip de l'utilisateur
  63. *
  64. * @return string
  65. */
  66. public function ip()
  67. {
  68. return isset($this->server['HTTP_X_FORWARDED_FOR'])
  69. ? $this->server['HTTP_X_FORWARDED_FOR'] : $this->server['REMOTE_ADDR'];
  70. }
  71. /**
  72. * Retourne si la requête est envoyé par un script ajax
  73. *
  74. * @return boolean
  75. */
  76. public function ajax()
  77. {
  78. return (!empty($this->server['HTTP_X_REQUESTED_WITH']) &&
  79. strtolower($this->server['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest');
  80. }
  81. /**
  82. * Retourne si la connexion est sécurisé
  83. *
  84. * @return boolean
  85. */
  86. public function secure()
  87. {
  88. return isset($_SERVER['HTTPS']);
  89. }
  90. /**
  91. * Retourne la méthode utilisée lors de la requête
  92. * @return string
  93. */
  94. public function method()
  95. {
  96. return $this->method;
  97. }
  98. /**
  99. * User-agent utilisé lors de la requête
  100. *
  101. * @param string $user_agent
  102. *
  103. * @return null
  104. */
  105. public function user_agent($user_agent = null)
  106. {
  107. if (null !== $user_agent) {
  108. $this->server['HTTP_USER_AGENT'] = $user_agent;
  109. }
  110. return $this->server['HTTP_USER_AGENT'];
  111. }
  112. /**
  113. * Retourne l'uri demandé par l'utilisateur
  114. *
  115. * @param string $uri
  116. *
  117. * @return string
  118. */
  119. public function uri($uri = null)
  120. {
  121. if (null !== $uri) {
  122. $this->uri = $uri;
  123. }
  124. return $this->uri;
  125. }
  126. /**
  127. * Retourne la route demandé par l'utilisateur
  128. *
  129. * @param string $route
  130. *
  131. * @return string
  132. */
  133. public function route($route = null)
  134. {
  135. if (null !== $route) {
  136. $this->route = $route;
  137. }
  138. return $this->route;
  139. }
  140. /**
  141. * Retourne le prefix de la route
  142. *
  143. * @param string $prefix
  144. *
  145. * @return string
  146. */
  147. public function prefix($prefix = null)
  148. {
  149. if (null !== $prefix) {
  150. $this->prefix = $prefix;
  151. }
  152. return $this->prefix;
  153. }
  154. /**
  155. * Retourne l'action utilisée lors de la requête
  156. *
  157. * @param string $action
  158. *
  159. * @return string
  160. */
  161. public function action($action = null)
  162. {
  163. if (null !== $action) {
  164. $this->action = $action;
  165. }
  166. return $this->action;
  167. }
  168. /**
  169. * Définis ou retourne une clée serveur
  170. *
  171. * @param bool $key : Nom de la clée
  172. * @param null $value : Valeur de la clée si renseigné
  173. *
  174. * @return mixed False si aucune valeur
  175. */
  176. public function server($key = false, $value = null)
  177. {
  178. if (null === $value) {
  179. if (false === $key) {
  180. return $this->server;
  181. }
  182. return isset($this->server[$key]) ? $this->server[$key] : false;
  183. } else {
  184. $this->server[$key] = $value;
  185. return true;
  186. }
  187. }
  188. }