مرحبا
Sorry, dass ich mich erst wieder so spät einklinke, hatte einen kleinen Crash am Wochenende und war ein bisschen weggetreten.
Das ist ein sogenannter Type-Hint
Ok, Type-Hint habe ich soweit verstanden.
Das mit dem Menu war aber glaube ich keine Gute Idee. Sieht zwar leicht aus, aber die Objektiteration macht mich jetzt schon ganz Bibber und Bange.
Können wir vielleicht auf etwas leichteres umsteigen? Eine leichte Übung wäre Angepasste Inhalte für mobile Endgeräte (hoffe ich zumindest :)).
Ich habe damit mal rumgespielt (das mit dem Menu ist mir derzeit zu Hoch), und habe das Bsp. vom Dirk in eine Klasse gepackt.
Die Klasse soll ermitteln, ob der anfordernde Client ein Mobil-Gerät ist, oder nicht (das funktioniert bereits).
Darüberhinaus muss die Klasse auch mit Cookies und GET-Variablen arbeiten. Sollte ich diese Variablen von Aussen mittels Parametern der Klasse übergeben, oder soll ich hier innerhalb der Klasse direkt auf die Globalen Variablen zugreifen?
Meine Idee für die Klasse wäre so:
class CheckMobile
{
public $_device; // @return "Mobile" oder "Desktop"
// Sind die Useragents hier richtig aufgehoben?
private $_agents = array('up.browser','up.link','mmp','symbian','smartphone'
,'midp','wap','phone','Windows CE','Pocket','mobile'
,'-mobile','portable','SDA','PDA','handheld','iemobile'
,'palmos','minimo','avantgo','cHTML','blackberry'
,'opera mini','fennec','nokia','googlebot-mobile');
public function __construct()
{
$this->_device = $this->GetDevice();
}
private function isMobile() // Prüfen der Browserkennung
{
for ($i = 0; $i < count($this->_agents); $i++)
if (isset($_SERVER["HTTP_USER_AGENT"]) AND strpos(strtolower($_SERVER['HTTP_USER_AGENT']), $this->_agents[$i]) !== false)
return true;
return false;
}
private function GetDevice()
{
if ($this->isMobile())
return 'Mobile';
else
return 'Desktop';
}
}
// Aufruf
$_device = new CheckMobile();
echo $_device->_device;
Ist der Ansatz soweit Ok? Als nächstes müsste ich Cookies und GET-Parameter prüfen, wie sollte ich da drangehen? Die Variablen von Aussen der Klasse hinzufügen und innerhalb der Klasse wie "normale" Variablen behandeln, oder direkt die Superglobalen Variablen verwenden? Also $_COOKIES
und $_GET
?
Sorry das ich gleich wieder das Thema wechsele, aber bevor ich wieder nur die hälfte verstehe.
Und die Fertige Klasse könnte später ins Wiki. 2 Fliegen mit einer Klatsche :)
mfg
Die neuen 4 Jahreszeiten: Frühling, ARSCHLOCH, Herbst und Winter!