Archive for October, 2008
Browserstatistikk – okt 2008 – Chrome og Safari kryper frem
| IE7 | IE6 | IE8 | Firefox 3 | Firefox 2 | Opera | Safari | Chrome | |
| 1001spill.no | 64,8% | 15% | 0,3% | 11% | 3.6% | 2.5% | 1.7% | 0,5% |
Tallene er basert på 195 038 besøkende på nettsiden 1001 Spill. 97% er fra Norge.
Totalt gir dette IE: 80,1%, en nedgang på ca 1%, og Firefox: 14,6% hvilket er på stedet hvil. Chrome gjør sin inntreden med ca 0.5% mens Safari har en liten fremgang på 0.7%
__autoload i PHP5
Lei av å inkludere hauger av klassefiler i PHP? Prøv __autoload!
Obs! Autload fungerer kun i PHP5
Autoload er en funksjon som kalles ved bruk av en udefinert klasse eller interface.
Eks:
Høres dette skummelt ut? Som alltid bør slike funksjoner brukes med fornuft.
Her er et par ting å tenke på:
- Vurder å vaske $class_name-parameteren. For å minimere hacker-muligheter.
- Feil kan ikke fanges med catch inne i __autoload-funksjonen.
Tenk også på kodens lesbarhet. I noen tilfeller kan include være nyttig for å synliggjøre avhengighet til visse klasser.
Selv bruker jeg autoload på løse avhengigheter som f.eks Log, Profiler eller Cache-klassene, men lar include gjerne stå ved sterke knytninger.
Her er min autoload-funksjon med whitelist-vasking av $class_name parameteren:
function __autoload($class_name) {
// Whitelist-vasking
$class_name = preg_replace( "/[^a-zA-Z0-9_]/", "", $class_name );
// Sjekk etter filene i alle include-kataloger
$include_path_tokens = explode(':', get_include_path() );
// Aktuelle underkataloger
$dirs = array("classes","models","controllers");
foreach($include_path_tokens as $prefix){
if ($prefix==".")
continue;
foreach($dirs as $dir){
$path = $prefix . '/'.$dir.'/' . $class_name . '.php';
if(file_exists($path)){
require_once $path;
return;
}
}
}
}
Les mer om autoload i PHP-dokumentasjonen.
