Archive for October, 2008

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%

posted by admin October 29, 2008 5:01 pm     |     read comments (1)
October 27, 2008

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

posted by admin October 27, 2008 12:30 pm     |     read comments (0)