Mas o que vem a ser isso ?
Muitos desenvolvedores ao desenvolver aplicações orientadas a objeto criam um arquivo PHP para cada definição de classe. Um dos maiores contratempos é ter de escrever uma longa lista de includes no início de cada script(um include para cada classe necessária).
Existem 2 formas de se fazer um autoloading para inclusão dessas classes, a primeira porém
não muito legal, pois você acaba fazendo includes da mesma forma usando um include ou require:
function __autoload($class) {
require_once("includes/class/".$class.".class.php");
}
A única exigência é que o nome do arquivo que contém a classe deve estar igual ao nome da classe
Já a segunda forma mais elegante, os arquivos necessários serão carregados automaticamente
Para isso vamos criar a classe autoloader que carregará todos os arquivos necessários para a execução dos nossos scripts, estejam eles nos diretorios "/model", "/controller", "/lib" ou "/helper"
class autoloader {
public static $loader;
public static function init()
{
if (self:: $loader == NULL)
self:: $loader = new self();
return self:: $loader;
}
public function __construct()
{
spl_autoload_register(array($this,'model'));
spl_autoload_register(array($this,'helper'));
spl_autoload_register(array($this,'controller'));
spl_autoload_register(array($this,'library'));
}
public function library( $class)
{
set_include_path('lib/');
spl_autoload_extensions('.library.php');
spl_autoload($class);
}
public function controller($class)
{
$class = preg_replace('/_controller$/ui',''$class);
set_include_path('controller/');
spl_autoload_extensions('.controller.php');
spl_autoload($class);
}
public function model($class)
{
$class = preg_replace('/_model$/ui',''$class);
set_include_path('model/');
spl_autoload_extensions('.model.php');
spl_autoload($class);
}
public function helper($class)
{
$class = preg_replace('/_helper$/ui',''$class);
set_include_path('helper/');
spl_autoload_extensions('.helper.php');
spl_autoload$class);
}
}
//chamando o autoloader
autoloader::init();
//usando uma classe que está no diretório /lib com o arquivo chamado ITest.library.php
$objITest = new ITest();
$objITest->iteste();
//classe ITest
class ITest{
function __construct(){}
function iteste(){
print("Usando a classe ITeste com autoloader");
}
}
O resultado será :
Usando a classe ITeste com autoloader
A restrição é de que o arquivo deve ser o mesmo do nome da classe a ser usada.
Este recurso é muito utilizado em frameworks para facilitar no desenvolvimento, isto faz com que o desenvolvedor não tenha que se preocupar com aquele monte de includes necessários para usar suas classes e interfaces.
Por hoje é só.
Nenhum comentário:
Postar um comentário