29. 10. 2008

Autoload v PHP

Autoload je velmi užitečná funkce PHP 5, sloužící k automatickému načtení tříd (souborů). Autoload je vlastně takové vylepšení require_once (include). Funkce __autoload se zavolá v případě, že požadujete třídu, která prozatím neexistuje.

Následující kód stačí vložit do core.php. Pokud máte rádi pořádek a své class umisťujete dle jejich významu do různých adresářů, je nutné nejprve nastavit include path.

// DS - oddelovac pro adresare
define ('DS', DIRECTORY_SEPARATOR);
// pak najdeme absolutni cestu
define ('ABSPATH', realpath(dirname(__FILE__)).DS);

// nastavime potrebne cesty k vasim class
set_include_path
(
ABSPATH.'libs'.DS.'core'.DS.PATH_SEPARATOR. // libs/core/
ABSPATH.'libs'.DS.'helper'.DS.PATH_SEPARATOR. // libs/helper/
get_include_path()
);

Většinou je dobrým zvykem dodržovat nějakou strukturu pojmenování tříd. V mém případě jsou třídy pojmenované class.nazev.php. Funkce __autoload bude vypadat následovně:

// automaticke nahrani trid umistenych v core nebo helper
function __autoload($class_name)
{
if (!class_exists($class_name, false) ||
!interface_exists($class_name, false))
require_once ('class.'.$class_name.'.php');
}

Tento kód si uložte např. do aload.php, pak už jen stačí napsat

require_once('aload.php');

kdekoliv, kde budete potřebovat pracovat se svými class.

#php, #programovani