]> git.mxchange.org Git - shipsimu.git/blob - inc/classes/main/request/class_HttpRequest.php
Style convention applied (incomplete), pre/post filters added for form handler
[shipsimu.git] / inc / classes / main / request / class_HttpRequest.php
1 <?php
2 /**
3  * A concrete HTTP request class to make HTTP requests more abstract
4  *
5  * @author              Roland Haeder <webmaster@ship-simu.org>
6  * @version             0.0.0
7  * @copyright   Copyright(c) 2007, 2008 Roland Haeder, this is free software
8  * @license             GNU GPL 3.0 or any newer version
9  * @link                http://www.ship-simu.org
10  *
11  * This program is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation, either version 3 of the License, or
14  * (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program. If not, see <http://www.gnu.org/licenses/>.
23  */
24 class HttpRequest extends BaseFrameworkSystem implements Requestable {
25         /**
26          * Array for the request data
27          */
28         private $requestData = array();
29
30         /**
31          * Wether this request is valid and can be further processed
32          */
33         private $requestIsValid = false;
34
35         /**
36          * Protected constructor
37          *
38          * @return      void
39          */
40         protected function __construct () {
41                 // Call parent constructor
42                 parent::__construct(__CLASS__);
43
44                 // Set part description
45                 $this->setObjectDescription("HTTP-Anfrage");
46
47                 // Create unique ID number
48                 $this->createUniqueID();
49
50                 // Clean up a little
51                 $this->removeNumberFormaters();
52                 $this->removeSystemArray();
53         }
54
55         /**
56          * Creates an instance of this class and prepares it a little
57          *
58          * @return      $httpInstance   An instance of this class
59          */
60         public final static function createHttpRequest () {
61                 // Create an instance
62                 $httpInstance = new HttpRequest();
63
64                 // Prepare the HTTP request data for usage
65                 $httpInstance->prepareRequestData();
66
67                 // Return the prepared instance
68                 return $httpInstance;
69         }
70
71         /**
72          * Prepares the HTTP request data for usage by currently copying
73          * $_REQUEST into a private attribute. Later on we can add more
74          * things for initialization here.
75          *
76          * @return      void
77          */
78         public function prepareRequestData () {
79                 // Copy the $_REQUEST array
80                 $this->requestData = $_REQUEST;
81         }
82
83         /**
84          * Checks wether a request element is set
85          * @param       $element        Name of the request element we want to check
86          * @return      $isSet          Wether the request element is set
87          * @throws      MissingArrayElementsException   Thrown if a request element is not set
88          */
89         public function isRequestElementSet ($element) {
90                 // Is this element found?
91                 if (!isset($this->requestData[$element])) {
92                         // Then throw an exception
93                         throw new MissingArrayElementsException(array($this, 'requestData', $element), self::EXCEPTION_MISSING_ELEMENT);
94                 }
95
96                 // All clear
97                 return true;
98         }
99
100         /**
101          * Getter for request element or 'null' if the element was not found
102          *
103          * @param       $element        Name of the request element we want to check
104          * @return      $value          Value of the found request element or 'null' if the
105          *                                              element was not found
106          */
107         public function getRequestElement ($element) {
108                 // Initialize value
109                 $value = null;
110
111                 try {
112                         if ($this->isRequestElementSet($element)) {
113                                 $value = $this->requestData[$element];
114                         }
115                 } catch (MissingArrayElementsException $e) {
116                         // Do nothing here
117                 }
118
119                 // Return the element's value
120                 return $value;
121         }
122
123         /**
124          * Wrapper method for array_key() function for the request data array
125          *
126          * @return      $array  An array containing all array keys to return
127          */
128         public function getParameterNames () {
129                 return array_keys($this->requestData);
130         }
131
132         /**
133          * Getter for a header element or 'null' if the header was not found
134          *
135          * @param       $headerName             Name of the header
136          * @return      $headerValue    Value of the header or 'null' if not found
137          */
138         public function getHeader ($headerName) {
139                 // Default return value on error
140                 $headerValue = null;
141
142                 // Construct the name
143                 $name = 'HTTP_' . strtolower(str_replace('-', '_', $headerName));
144
145                 // Does this header exist?
146                 if (isset($_SERVER[$name])) {
147                         $headerValue = $_SERVER[$name];
148                 }
149
150                 // Return the value
151                 return $headerValue;
152         }
153
154         /**
155          * Getter for request method. This getter might be useful for security filters
156          *
157          * @return      $requestMethod  Used request method
158          */
159         public final function getRequestMethod () {
160                 return $_SERVER['REQUEST_METHOD'];
161         }
162
163         /**
164          * Sets wether the request was valid (default: true)
165          *
166          * @param       $isValid                Wether the request is valid
167          * @return      void
168          */
169         public final function requestIsValid ($isValid = true) {
170                 $this->requestIsValid = (bool) $isValid;
171         }
172 }
173
174 // [EOF]
175 ?>