
Öffentliche Methoden | |
| __construct ($uri=null, array $parameters=array(), $readOnly=false) | |
| Konstruktor. | |
| __toString () | |
| Gibt URI als String zurück. | |
| createUriString ($uri, $appendToken=true, $absolute=false) | |
| URI-Generator für Smarty. | |
| getAclResourceId () | |
| Gibt ACL-Ressourcen-ID zurück. | |
| getFragment () | |
| Gibt das Fragment des URI zurück. | |
| getParameters ($parameters=null, $default=null) | |
| Gibt einen, mehrere oder alle Parameter zurück. | |
| getUriString ($parameters=true, $appendToken=false, $absolute=false) | |
| Gibt den URI als String zurück. | |
| hasParameters (array $parametersNames=array(), $or=false) | |
| Prüft, ob Parameter vorhanden sind. | |
| setFragment ($fragment) | |
| Setzt das Fragment des URI. | |
| setParameters (array $parameters=array(), $overwrite=true) | |
| Setzt Array von Parametern. | |
| setUri ($uri=false) | |
| Setzt neue URI. | |
| toString ($parameters=true, $appendToken=false, $absolute=false) | |
| Gibt den URI als String zurück. | |
Öffentliche, statische Methoden | |
| static | getToken () |
| Gibt Token zurück oder erzeugt es. | |
| static | setBaseUri ($baseUri) |
| Legt Basis-Verzeichnis fest. | |
| static | setHost ($host) |
| Legt den Host fest. | |
| static | setScheme ($scheme= 'http') |
| Legt Schema fest (http / https). | |
| static | setToken ($token=null) |
| Legt Token fest. | |
Geschützte Methoden | |
| _getParametersString ($parameters) | |
| Gibt die Parameter als String zurück. | |
| _parsePath ($module, $controller, $action) | |
| Parst den aufgerufenen Pfad. | |
| _parseQuery ($query) | |
| URI-Query (?param=value&. | |
| _parseUri ($uri) | |
| Trennt einen URI in einen Adress- und einen Parameterteil und wandelt die Parameter in ein Array um. | |
| _parseUserParameters ($parameters) | |
| Parsen der benutzerdefinierten Parameter (/param1/value1/param2. | |
Geschützte Attribute | |
| $_fragment = null | |
| string, Fragment der URI | |
| $_data = array() | |
| array, Parameter der URI | |
| $_propertiesMandatory = array('module', 'controller', 'action') | |
| array, für Gültigkeit nötige Parameter | |
| $_propertiesProtected = array('module', 'controller', 'action') | |
| array, geschütze Parameter | |
Statische geschützte Attribute | |
| static | $_baseUri = null |
| string, Basisverzeichnis (http://expample.org/baseUri/htdocs/index.php) | |
| static | $_host = null |
| string, Hostadresse | |
| static | $_scheme = 'http' |
| string, http / https | |
| static | $_token = null |
| string, aktuelles Token | |
Relativ simple URI-Klasse für Seiten relativ zu einem allgemeinen Host. Ist also weniger geeignet für Links auf externe Seiten.
Definiert in Zeile 12 der Datei Http.php.
| Dsao_Uri_Http::__construct | ( | $ | uri = null, |
|
| array $ | parameters = array(), |
|||
| $ | readOnly = false | |||
| ) |
Konstruktor.
| $uri | string, URI | |
| $parameters | array, Parameter | |
| $readOnly | bool, ob Objekt als schreibgeschützt markiert werden soll |
Definiert in Zeile 62 der Datei Http.php.
Benutzt setUri().
00063 { 00064 $this->setUri($uri); 00065 00066 parent::__construct($parameters, $readOnly); 00067 }
| Dsao_Uri_Http::__toString | ( | ) |
Gibt URI als String zurück.
Definiert in Zeile 74 der Datei Http.php.
Benutzt toString().
00075 { 00076 return $this->toString(); 00077 }
| Dsao_Uri_Http::_getParametersString | ( | $ | parameters | ) | [protected] |
Gibt die Parameter als String zurück.
| $parameters | array|bool, true = alle Parameter; false = keine Parameter; array = Teile der Parameter, innerhalb des Arrays können wiederum die Namen von Parametern sowie true oder false übergeben werden (array (true, 'blubb') -> alles außer 'blubb') |
Definiert in Zeile 88 der Datei Http.php.
Wird benutzt von toString().
00089 { 00090 // string, Parameter, zu einem String zusammengefügt 00091 $parametersString = ''; 00092 00093 // Falls keine Parameter vorhanden oder keine übergeben werden sollen 00094 if (null === $this->_data || false === $parameters) 00095 { 00096 return $parametersString; 00097 } 00098 00099 // Sortieren 00100 ksort($this->_data); 00101 00102 // Parameterliste in Array umwandeln 00103 $parameters = (array) $parameters; 00104 00105 // Zu übergebende Parameter 00106 $parametersNames = array(); 00107 00108 // Übergebene Parameter durchgehen 00109 foreach ($parameters as $parameter) 00110 { 00111 // Falls true (alle Parameter) oder false (keine Parameter) 00112 if (is_bool($parameter)) 00113 { 00114 $parametersNames = 00115 (true === $parameter ? $this->_data : array()); 00116 00117 continue; 00118 } 00119 00120 // Falls Parameter vorhanden 00121 if (isset($this->_data[$parameter])) 00122 { 00123 // Falls Parameter bereits in Liste vorhanden, löschen 00124 if (isset($parametersNames[$parameter])) 00125 { 00126 unset($parametersNames[$parameter]); 00127 } 00128 // Ansonsten hinzufügen 00129 else 00130 { 00131 $parametersNames[$parameter] = true; 00132 } 00133 } 00134 } 00135 00136 // Nun die endgültigen Parameter durchgehen und String basteln 00137 foreach ($parametersNames as $parameter => $value) 00138 { 00139 // Modul, Controller, Aktion und Token und Error-Handler überspringen 00140 if (in_array($parameter, 00141 array('action', 'controller', 'module', 'token', 'error_handler'))) 00142 { 00143 continue; 00144 } 00145 00146 $parametersString .= '/'.$parameter.'/'. urlencode((string) $this->_data[$parameter]); 00147 } 00148 00149 return $parametersString; 00150 }
| Dsao_Uri_Http::_parsePath | ( | $ | module, | |
| $ | controller, | |||
| $ | action | |||
| ) | [protected] |
Parst den aufgerufenen Pfad.
| $module | string, Modul | |
| $controller | string, Controller | |
| $action | string, Aktion |
Definiert in Zeile 160 der Datei Http.php.
Wird benutzt von _parseUri().
00161 { 00162 // array, Name der Teile des Adressteils des URI 00163 $adress = array( 00164 'module' => $module, 00165 'controller' => $controller, 00166 'action' => $action 00167 ); 00168 00169 // Modul, Controller und Aktion durchgehen, sofern vorhanden. 00170 foreach ($adress as $part => $value) 00171 { 00172 // Falls kein Wert übergeben 00173 if (!$value) 00174 { 00175 continue; 00176 } 00177 00178 $this->_data[$part] = $value; 00179 } 00180 }
| Dsao_Uri_Http::_parseQuery | ( | $ | query | ) | [protected] |
URI-Query (?param=value&.
..) parsen.
| $query | string, Query |
Definiert in Zeile 188 der Datei Http.php.
Wird benutzt von _parseUri().
00189 { 00190 // Falls Query leer 00191 if (!$query) 00192 { 00193 return; 00194 } 00195 00196 // Parameter durchgehen 00197 foreach (explode('&', $query) as $parameter) 00198 { 00199 $parts = explode('=', $parameter); 00200 00201 $this->_data[$parts[0]] = (isset($parts[1]) ? $parts[1] : true); 00202 } 00203 }
| Dsao_Uri_Http::_parseUri | ( | $ | uri | ) | [protected] |
Trennt einen URI in einen Adress- und einen Parameterteil und wandelt die Parameter in ein Array um.
| $uri | string, URI |
Definiert in Zeile 212 der Datei Http.php.
Benutzt _parsePath(), _parseQuery() und _parseUserParameters().
Wird benutzt von setUri().
00213 { 00214 // Aufteilen des URI 00215 $pattern = 00216 '~^((?<protocol>https?|ftp)://(?<host>[^/?#]*))?/'. 00217 '(?<baseUri>'.self::$_baseUri.'/)?((?<module>[^/?#]*)/)?'. 00218 '((?<controller>[^/?#]*)/)?(?<action>[^/?#]*)?'. 00219 '(?<userParameters>[^?#]*)?\??((?<query>[^#]*))?#?(?<fragment>.*)?$~'; 00220 00221 preg_match($pattern, $uri, $matches); 00222 00223 // Falls Aufteilung nicht erfolgreich war 00224 if (empty($matches)) 00225 { 00226 return; 00227 } 00228 00229 // Falls externe Adresse übergeben wurde 00230 if ($matches['host'] && $matches['host'] != self::$_host) 00231 { 00232 throw new Dsao_Exception(array( 00233 'message' => 'dsao_uri_http_unknown_host', 00234 'variables' => array('host' => $matches['host']), 00235 )); 00236 } 00237 00238 // Fragment setzen 00239 $this->_fragment = $matches['fragment']; 00240 00241 // Verschiedene Teile des URI parsen, mit aufsteigender Priorität 00242 00243 // Query parsen 00244 $this->_parseQuery($matches['query']); 00245 00246 // User-Parameter parsen 00247 $this->_parseUserParameters($matches['userParameters']); 00248 00249 // Pfad parsen 00250 $this->_parsePath 00251 ($matches['module'], $matches['controller'], $matches['action']); 00252 00253 }
| Dsao_Uri_Http::_parseUserParameters | ( | $ | parameters | ) | [protected] |
Parsen der benutzerdefinierten Parameter (/param1/value1/param2.
..).
| $parameters | string, mit Slashes geteilte Parameter |
Definiert in Zeile 261 der Datei Http.php.
Wird benutzt von _parseUri().
00262 { 00263 // Falls Parameterliste leer 00264 if (!$parameters) 00265 { 00266 return; 00267 } 00268 00269 // array, Parameter 00270 $partsParameters = explode('/', $parameters); 00271 00272 // int, Anzahl Parameter-Teile (= Anzahl Parameter * 2 +-1) 00273 $countPartsParameters = count($partsParameters); 00274 00275 // Parameter durchgehen (in Zweierschritten) 00276 for ($i = 0; $i < $countPartsParameters; $i += 2) 00277 { 00278 // Falls Parameter leerer String, annehmen, dass aus Versehen ein Slash 00279 // doppelt ist, und nur um eins inkrementieren (-1 +2 = 1) 00280 if (!$partsParameters[$i]) 00281 { 00282 $i--; 00283 continue; 00284 } 00285 00286 // Falls letztes Element erreicht oder kein Wert für den Parameter 00287 // übergeben wurde, Wert setzen 00288 if ($i == ($countPartsParameters-1) || !$partsParameters[($i+1)]) 00289 { 00290 $partsParameters[($i+1)] = true; 00291 } 00292 00293 00294 $this->_data[$partsParameters[$i]] = 00295 urldecode($partsParameters[($i+1)]); 00296 } 00297 }
| Dsao_Uri_Http::createUriString | ( | $ | uri, | |
| $ | appendToken = true, |
|||
| $ | absolute = false | |||
| ) |
URI-Generator für Smarty.
Da Smarty nicht mit statischen Methoden umgehen kann, braucht es diese Methode. Außerdem wird sie intern zur Generierung des URI verwendet.
Diese Methode erstellt einen neuen URI aus dem übergebenen String, hängt das Token an und gibt den URI zurück.
| $uri | string, URI | |
| $appendToken | bool, ob Token angehängt werden soll | |
| $absolute | bool, ob URI mit Schema und Host erzeugt werden soll |
Definiert in Zeile 313 der Datei Http.php.
Wird benutzt von toString().
00314 { 00315 // string, URI 00316 $uriResult = ''; 00317 00318 // Falls absoluter URI angefordert wurde 00319 if ($absolute) 00320 { 00321 $uriResult .= self::$_scheme.'://'.self::$_host; 00322 } 00323 00324 // Slash voranstellen 00325 $uri = '/'. ltrim($uri, '/'); 00326 00327 // Eigentlicher URI mit Parametern 00328 $uriResult .= (self::$_baseUri ? self::$_baseUri.$uri : $uri); 00329 00330 // Falls Token angehängt werden soll 00331 if ($appendToken) 00332 { 00333 $uriResult .= '/token/'.self::getToken(); 00334 } 00335 00336 return $uriResult.($this->_fragment ? '#'.$this->_fragment : ''); 00337 }
| Dsao_Uri_Http::getAclResourceId | ( | ) |
| Dsao_Uri_Http::getFragment | ( | ) |
| Dsao_Uri_Http::getParameters | ( | $ | parameters = null, |
|
| $ | default = null | |||
| ) |
Gibt einen, mehrere oder alle Parameter zurück.
| $parameters | array|string, Parameter | |
| $default | mixed, Standardwert |
Definiert in Zeile 367 der Datei Http.php.
Benutzt Dsao_DataHandler_Abstract::getData().
00368 { 00369 return parent::getData($parameters, $default); 00370 }
| static Dsao_Uri_Http::getToken | ( | ) | [static] |
| Dsao_Uri_Http::getUriString | ( | $ | parameters = true, |
|
| $ | appendToken = false, |
|||
| $ | absolute = false | |||
| ) |
Gibt den URI als String zurück.
| $parameters | array|bool, mit oder ohne Parameter, oder ein Array der Parameter, die übergeben werden sollen | |
| $appendToken | bool, mit oder ohne Token | |
| $absolute | bool, ob absoluter URI erzeugt werden soll |
Definiert in Zeile 392 der Datei Http.php.
Benutzt toString().
00393 { 00394 return $this->toString($parameters, $appendToken, $absolute); 00395 }
| Dsao_Uri_Http::hasParameters | ( | array $ | parametersNames = array(), |
|
| $ | or = false | |||
| ) |
Prüft, ob Parameter vorhanden sind.
| $parametersNames | array, Zu prüfende Parameter (leerer Array -> prüfen, ob überhaupt Parameter vorhanden sind) | |
| $or | bool, ob nur einer oder alle Parameter für das Erfüllen der Bedingung vorhanden sein müssen |
Definiert in Zeile 406 der Datei Http.php.
Benutzt Dsao_DataHandler_Abstract::hasData().
00407 { 00408 return parent::hasData($parametersNames, $or, array('token')); 00409 }
| static Dsao_Uri_Http::setBaseUri | ( | $ | baseUri | ) | [static] |
Legt Basis-Verzeichnis fest.
| $baseUri | string, Basis-Verzeichnis |
Definiert in Zeile 417 der Datei Http.php.
Wird benutzt von Dsao_Controller_Action_Helper_Uri::init().
| Dsao_Uri_Http::setFragment | ( | $ | fragment | ) |
Setzt das Fragment des URI.
| $fragment | string, Fragment |
Definiert in Zeile 428 der Datei Http.php.
| static Dsao_Uri_Http::setHost | ( | $ | host | ) | [static] |
Legt den Host fest.
| $host | string, Host |
Definiert in Zeile 441 der Datei Http.php.
Wird benutzt von Dsao_Controller_Action_Helper_Uri::init().
| Dsao_Uri_Http::setParameters | ( | array $ | parameters = array(), |
|
| $ | overwrite = true | |||
| ) |
Setzt Array von Parametern.
| $parameters | array, Parameter | |
| $overwrite | bool, ob neue Werte vorhandene überschreiben sollen |
Definiert in Zeile 453 der Datei Http.php.
Benutzt Dsao_DataHandler_Abstract::setData().
Wird benutzt von setUri().
00454 { 00455 return parent::setData($parameters, $overwrite); 00456 }
| static Dsao_Uri_Http::setScheme | ( | $ | scheme = 'http' |
) | [static] |
Legt Schema fest (http / https).
| $scheme | string, HTTP / HTTPS |
Definiert in Zeile 464 der Datei Http.php.
Wird benutzt von Dsao_Controller_Action_Helper_Uri::init().
| static Dsao_Uri_Http::setToken | ( | $ | token = null |
) | [static] |
Legt Token fest.
| $token | string, Token |
Definiert in Zeile 475 der Datei Http.php.
Benutzt Dsao_Hash::factory().
Wird benutzt von Dsao_Controller_Action_Helper_SessionToken::init().
00476 { 00477 // Falls kein Token übergeben, neues erzeugen 00478 if (null === $token) 00479 { 00480 $token = Dsao_Hash::factory()->getHash(4); 00481 } 00482 00483 self::$_token = $token; 00484 00485 return $token; 00486 }
| Dsao_Uri_Http::setUri | ( | $ | uri = false |
) |
Setzt neue URI.
| $uri | bool|string, URI; false = zurücksetzen auf Standardwerte |
Definiert in Zeile 494 der Datei Http.php.
Benutzt _parseUri() und setParameters().
Wird benutzt von __construct().
00495 { 00496 // Falls URI zurück gesetzt werden soll 00497 if (false === $uri) 00498 { 00499 $this->setParameters(array( 00500 'module' => null, 00501 'controller' => null, 00502 'action' => null)); 00503 } 00504 else 00505 { 00506 $this->_parseUri($uri); 00507 } 00508 00509 return $this; 00510 }
| Dsao_Uri_Http::toString | ( | $ | parameters = true, |
|
| $ | appendToken = false, |
|||
| $ | absolute = false | |||
| ) |
Gibt den URI als String zurück.
| $parameters | array|bool, mit oder ohne Parameter, oder ein Array der Parameter, die übergeben werden sollen | |
| $appendToken | bool, mit oder ohne Token | |
| $absolute | bool, ob absoluter URI erzeugt werden soll |
Definiert in Zeile 521 der Datei Http.php.
Benutzt _getParametersString(), createUriString() und Dsao_DataHandler_Abstract::isValid().
Wird benutzt von __toString() und getUriString().
00522 { 00523 // Gültigkeit prüfen 00524 $this->isValid(true); 00525 00526 // string, Parameter als String zusammensetzen 00527 $parametersString = $this->_getParametersString($parameters); 00528 00529 // URI zusammenfügen 00530 $uri = '/'.$this->_data['module'].'/'. 00531 $this->_data['controller'].'/'.$this->_data['action']. 00532 $parametersString; 00533 00534 // URI zurückgeben 00535 return $this->createUriString($uri, $appendToken, $absolute); 00536 }
1.5.7.1