Dsao_Uri_Http Klassenreferenz

Repräsentiert einen HTTP-URI. Mehr ...

Klassendiagramm für Dsao_Uri_Http:

Dsao_DataHandler_Abstract

Aufstellung aller Elemente

Ö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


Ausführliche Beschreibung

Repräsentiert einen HTTP-URI.

Relativ simple URI-Klasse für Seiten relativ zu einem allgemeinen Host. Ist also weniger geeignet für Links auf externe Seiten.

Autor:
DSAo-Md

http://www.gnu.org/licenses/gpl-3.0.html GNU Public License

Version:
SVN: $Id: Http.php 519 2009-09-13 15:51:26Z saviola777 $

Definiert in Zeile 12 der Datei Http.php.


Beschreibung der Konstruktoren und Destruktoren

Dsao_Uri_Http::__construct ( uri = null,
array $  parameters = array(),
readOnly = false 
)

Konstruktor.

Parameter:
$uri string, URI
$parameters array, Parameter
$readOnly bool, ob Objekt als schreibgeschützt markiert werden soll
Rückgabe:
void

Definiert in Zeile 62 der Datei Http.php.

Benutzt setUri().

00063   {
00064     $this->setUri($uri);
00065 
00066     parent::__construct($parameters, $readOnly);
00067   }


Dokumentation der Elementfunktionen

Dsao_Uri_Http::__toString (  ) 

Gibt URI als String zurück.

Rückgabe:
string, URI

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.

Parameter:
$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')
Rückgabe:
string, Parameterliste

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.

Parameter:
$module string, Modul
$controller string, Controller
$action string, Aktion
Rückgabe:
void

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.

Parameter:
$query string, Query
Rückgabe:
void

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.

Parameter:
$uri string, URI
Rückgabe:
void

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.

..).

Parameter:
$parameters string, mit Slashes geteilte Parameter
Rückgabe:
void

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.

Parameter:
$uri string, URI
$appendToken bool, ob Token angehängt werden soll
$absolute bool, ob URI mit Schema und Host erzeugt werden soll
Rückgabe:
string, URI, ergänzt um Token

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 (  ) 

Gibt ACL-Ressourcen-ID zurück.

Rückgabe:
string, ACL-Ressourcen-ID

Definiert in Zeile 344 der Datei Http.php.

00345   {
00346     return $this->_data['module'].'_'.
00347       $this->_data['controller'].'_'.$this->_data['action'];
00348   }

Dsao_Uri_Http::getFragment (  ) 

Gibt das Fragment des URI zurück.

Rückgabe:
string, Fragment

Definiert in Zeile 355 der Datei Http.php.

00356   {
00357     return $this->_fragment;
00358   }

Dsao_Uri_Http::getParameters ( parameters = null,
default = null 
)

Gibt einen, mehrere oder alle Parameter zurück.

Parameter:
$parameters array|string, Parameter
$default mixed, Standardwert
Rückgabe:
mixed, Parameter, Array von Parametern oder 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]

Gibt Token zurück oder erzeugt es.

Rückgabe:
string, Token

Definiert in Zeile 377 der Datei Http.php.

00378   {
00379     return self::$_token;
00380   }

Dsao_Uri_Http::getUriString ( parameters = true,
appendToken = false,
absolute = false 
)

Gibt den URI als String zurück.

Veraltet:
stattdessen toString() benutzen
Parameter:
$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
Rückgabe:
string, URI

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.

Parameter:
$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
Rückgabe:
bool, ob URI die geforderten Parameter hat oder nicht

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.

Parameter:
$baseUri string, Basis-Verzeichnis
Rückgabe:
void

Definiert in Zeile 417 der Datei Http.php.

Wird benutzt von Dsao_Controller_Action_Helper_Uri::init().

00418   {
00419     self::$_baseUri = $baseUri;
00420   }

Dsao_Uri_Http::setFragment ( fragment  ) 

Setzt das Fragment des URI.

Parameter:
$fragment string, Fragment
Rückgabe:
Dsao_Uri_Http, fließendes Interface

Definiert in Zeile 428 der Datei Http.php.

00429   {
00430     $this->_fragment = (string) $fragment;
00431 
00432     return $this;
00433   }

static Dsao_Uri_Http::setHost ( host  )  [static]

Legt den Host fest.

Parameter:
$host string, Host
Rückgabe:
void

Definiert in Zeile 441 der Datei Http.php.

Wird benutzt von Dsao_Controller_Action_Helper_Uri::init().

00442   {
00443     self::$_host = $host;
00444   }

Dsao_Uri_Http::setParameters ( array $  parameters = array(),
overwrite = true 
)

Setzt Array von Parametern.

Parameter:
$parameters array, Parameter
$overwrite bool, ob neue Werte vorhandene überschreiben sollen
Rückgabe:
Dsao_Uri_Http, fließendes Interface

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).

Parameter:
$scheme string, HTTP / HTTPS
Rückgabe:
void

Definiert in Zeile 464 der Datei Http.php.

Wird benutzt von Dsao_Controller_Action_Helper_Uri::init().

00465   {
00466     self::$_scheme = $scheme;
00467   }

static Dsao_Uri_Http::setToken ( token = null  )  [static]

Legt Token fest.

Parameter:
$token string, Token
Rückgabe:
void

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.

Parameter:
$uri bool|string, URI; false = zurücksetzen auf Standardwerte
Rückgabe:
Dsao_Uri_Http, fließendes Interface

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.

Parameter:
$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
Rückgabe:
string, URI

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   }


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei:

Erzeugt am Fri Sep 18 19:04:13 2009 für DSA online - Morgendaemmerung von  doxygen 1.5.7.1