Autor wpisu: Wojciech Sznapka, dodany: 15.09.2011 15:33, tagi: php, symfony, symfony2
Autor wpisu: JoShiMa, dodany: 14.09.2011 13:15, tagi: jquery, framework, php, skrypty
Autor wpisu: Tomasz Kowalczyk, dodany: 14.09.2011 09:25, tagi: javascript, jquery
Autor wpisu: Michal Wachowski, dodany: 14.09.2011 01:29, tagi: php
Autor wpisu: Tomasz Kowalczyk, dodany: 13.09.2011 19:24, tagi: javascript, php
Autor wpisu: Śpiechu, dodany: 13.09.2011 10:01, tagi: php
Dziś w programie lżejszy zamiennik dla funkcji get_browser()
— PHP User Agent. Za pomocą skryptu jesteśmy w stanie określić jakiej przeglądarki i systemu operacyjnego użytkownik używa. Oryginalna funkcja potrzebuje pliku browscap.ini, który obecnie zajmuje 405KB, co przekłada się na szybkość działania. Poza tym istnieje niebezpieczeństwo, że na serwerze produkcyjnym nie dadzą nam dostępu do w/w funkcji. (A przynajmniej tak piszą )
Całość składa się z dwóch klas. Skrypt nie stosuje przestrzeni nazw, za to jest całkiem nieźle udokumentowany. Ponadto jest trochę testów jednostkowych.
Używanie jest bardzo proste. Wystarczy stworzyć obiekt phpUserAgent
i można szaleć.
$ua = new phpUserAgent(); echo $ua->getBrowserName(); // firefox echo $ua->getBrowserVersion(); // 3.6 echo $ua->getOperatingSystem(); // linux echo $ua->getEngine(); // gecko
Gdy nie podamy parametrów, obiekt korzysta z bieżącej zmiennej $_SERVER['HTTP_USER_AGENT']
. Można samemu wymusić inny ciąg do rozpoznania podając w konstruktorze.
Dla typowych konfiguracji użytkownika skrypt działa całkiem nieźle. Rozpoznaje również aliasy nazw przeglądarek i systemów operacyjnych. Z testów jednostkowych widzę, że próbuje również rozpoznawać boty wyszukiwarek.
Patrząc na skrypt przyszłościowo już widzę rozrastającą się listę nazw i aliasów oraz autora powoli przestającego panować nad tym wszystkim. Na razie działa, ale co będzie później? Wg mnie architektura całości jest trochę niedopracowana. Aż prosi się o użycie wzorca projektowego Łańcuch zobowiązań, którego ogniwami będą poszczególne przeglądarki i to w ich gestii będzie rozpoznać siebie w podanym im ciągu. Żeby nie uderzyć tak bardzo w wydajność skryptu, łańcuch powinny rozpoczynać najczęściej używane przeglądarki aż do typu Unknown.