Im Beispiel in Listing 4 gibt es eine Klasse Probefahrt mit verschiedenen Methoden zur Reservierung der Fahrt, des Autos und weiterer sinnfreier Rahmenparameter. Beim klassischen Vorgehen würden Sie eine neue Variable, abgeleitet von der Klasse Probefahrt , erzeugen und die verschiedenen Werte an die Methoden übergeben Mit Hilfe der Methodenverkettung können Sie sich einiges an Tipparbeit sparen.
LISTING 4: FLUENT INTERFACES
class Probefahrt
{
private $reserviert;
private $strecke;
private $auto;
private $autohaendler;
public function
reserviereProbefahrt ($value)
{
$this -> reserviert = $value;
}
public function waehleHaender
($value)
{
$this -> autohaendler = $value;
}
public function waehleModell
($value)
{
$this -> auto = $value;
}
public function waehleStrecke
($value)
{
$this -> strecke = $value;
}
}
PHP OO bietet Ihnen interessante Neuerungen und eine Reihe von Vorteilen. Wenn Sie von einer 3G-Sprache wie C++ oder Java kommen, werden Sie die entsprechenden Eigenschaften und Funktionen auch bei PHP 5 schnell wiederfinden. [mb]
Geolocation-Dienste
Jeder Surfer ist durch seine IP-Adresse eindeutig identifizierbar. Diese Daten verraten auch seine Herkunft und lassen Rückschlüsse auf den Einstiegsknoten ins Internet zu. Von Andreas Hitzig
AUF EINEN BLICK
» Innerhalb von PHP gibt es verschiedene Dienste, mit denen Sie auf der Basis der reinen IP-Informationen die zugehörigen Standortdaten ermitteln können.
Dienste, die Ihnen aufgrund Ihres Standorts nicht zur Verfügung stehen, begegnen Ihnen im Internet immer wieder. So bietet beispielsweise Amazon seine Music Cloud heute ebenso wie Google nur für Anwender in den USA an. Bei YouTube treffen Sie des Öfteren auf Videos, die wegen der fehlenden Lizenzrechte in Deutschland nicht wiedergegeben werden können.
Diese Standortdaten werden alle über die IP-Adresse ermittelt, die Sie zum Surfen verwenden. Natürlich bieten diese Informationen keine vollständige Sicherheit, da Sie mit Hilfe eines Proxy-Servers oder Anonymisierungsdienstes diese verschleiern können. Die Mehrzahl der Surfer lässt sich jedoch auf diesem Weg eindeutig identifizieren.
Innerhalb von PHP gibt es verschiedene Dienste, mit denen Sie auf der Basis der reinen IP-Informationen auch die zugehörigen Standortdaten ermitteln können. In unserem Workshop nutzen wir die kostenlosen Schnittstellen von MaxMind. Einen ersten Eindruck über die Genauigkeit können Sie sich anhand der beiden Online-Varianten von GeoLite Country und City machen. Sie geben in einem Formular bis zu zehn IP-Adressen ein und der Dienst ermittelt Ihnen den Standort Ihres Internetzugangs. Sie sollten jedoch nicht zu viele Erwartungen in das Ergebnis setzen. Wenn Sie sich für die Einwahl nicht gerade in einer Großstadt befinden, wird die Ermittlung eher zu einem unscharfen Ergebnis führen. Ich selbst nutze als Internetprovider 1&1, der an meinem Standort auf die Infrastruktur von Arcor zurückgreift. Das Bundesland Baden-Württemberg wird sowohl vom kostenlosen als auch dem kostenpflichtigen Dienst richtig ermittelt. Beim Ort lagen jedoch beide Dienste ein wenig daneben. Eine hundertprozentige Genauigkeit werden Sie über diese Dienste jedoch in keinem Fall erzielen, da Sie immer ein Abbild der Infrastruktur Ihres Providers wiedergeben und diese nicht zwangsläufig identisch ist mit Ihrem eigenen Standort. Beim Test weiterer Anbieter lieferte die Auswertung immer das gleiche Ergebnis (Bild 1).
Über die Datenbank des Anbieters ermitteln Sie den ungefähren Standort einer IP-Adresse (Bild 1)
Durch die Struktur des Internets muss die Datenbank immer auf dem aktuellen Stand gehalten werden, damit das richtige Ergebnis zusammenkommt. Dies ist bei den großen Zugangsprovidern in der Regel kein Problem. Gerade bei kleineren Anbietern mit einem eingeschränkten und oftmals nicht zusammenhängenden IP-Be-reich kann es jedoch zu gewissen Ungenauigkeiten kommen. Aus diesem Grund schränken die meisten Anbieter von IP-Location-Diensten ihre Treffergenauigkeit auf rund 98 Prozent ein. Damit ist circa jede fünfzigste Abfrage falsch - mit diesem Risiko müssen Sie also leben, unabhängig davon, ob es sich um einen kostenlosen oder einen kommerziellen Dienst handelt.
Es gibt verschiedene Möglichkeiten, das API auf einem Apache Server zu installieren. Diese sind stark von Ihrer Systemumgebung und den geplanten Anwendungsszenarien abhängig. Auf der Website von MaxMind ( www.maxmind.com/app/php) finden Sie eine Beschreibung der drei unterschiedlichen Optionen. Es steht Ihnen entweder ein einfaches PHP-Modul zur Verfügung, das Sie in Ihren Programmcode einbinden. Zusätzlich dazu benötigen Sie für die Ausführung noch die entsprechende aktuelle Datenbank von GeoLite City oder Country, abhängig davon, wie genau Sie die IP-Daten auswerten möchten.
Etwas komplexer in der Installation und Konfiguration wird es in den Varianten zwei und drei. Bei der zweiten Option können Sie die Geo-IP-Programmdaten als PECL-Paket beziehen. Dazu laden Sie sich die aktuelle Version von der PECL-Seite ( http://pecl.php.net/package/geoip) und installieren diese entsprechend.
Als dritte Variante steht Ihnen noch ein PHP-Apache-Modul zur Verfügung. Dieses Paket können Sie von der MaxMind-Homepage ( www.maxmind.com/app/mod_geoip) laden, kompilieren und installieren.
Die unterschiedlichen Varianten sind in erster Linie in Abhängigkeit von den PerformanceAnforderungen der Implementierung zu wählen. Das PHP-Modul eignet sich für Testzwecke oder eine geringe Nutzungshäufigkeit. Das PECL-Paket ist für eine mittlere Anzahl von Benutzern ausgelegt. Wenn Sie dagegen viele Daten über die Schnittstelle verarbeiten möchten, führt kein Weg am Apache-Modul vorbei (Bild 2).
Es gibt verschiedene Wege, die GeoIP-Bibliotheken mit PHP zu nutzen (Bild 2)
Die Umsetzung und Nutzung der Schnittstelle unterscheidet sich bei den verschiedenen Arten der Implementierung nicht. Aus diesem Grund nutzen wir für die Darstellung der Beispiele des Workshops die erste Variante.
Wichtig für die sinnvolle Auswertung der Daten sind aktuelle Datenbestände. Die aktuelle Version der kostenlosen Datenbank für die Ermittlung des Landes oder der Stadt bekommen Sie direkt von der MaxMind-Website aus der entsprechenden Rubrik GeoLite Country oder GeoLite City . Kopieren Sie sich die Daten auf Ihren Webserver und integrieren Sie diese anschließend über den Programmcode (Bild 3).
In einem ersten Beispiel ermitteln Sie aus der IP-Adresse den Ländercode sowie das Land (Bild 3)
Im ersten Beispiel nutzen wir die Datei zur Ermittlung des Landes, die wir aktuell von der MaxMind-Website heruntergeladen haben. Der erste include -Befehl ist lediglich der direkten Integration der PHP-Bibliothek geschuldet. Haben Sie sich für eine alternative Installationsmethode entschieden, sieht dieser Teil entsprechend anders aus.
Читать дальше