__autoload, Bem Interessante P/ Poo

biel-kun
em Tutoriais de Websites

biel-kun

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 06/07/06Posts: 5

Olá, hoje vou mostrar a função __autoload que auxiliam muito na hora de programar PHP em POO(Programação Orientada a Objetos).

 

Primeiro é o Auto Load pra uma class:

function __autoload($class)
{
//Acoes...
}

É sempre bom lembrar que o nome da função DEVE ser __autoload, se não, lógicamente, não funciona!

 

Isto faz com que toda vez que você chamar uma Classe, antes de tentar instância-la ele execute as ações dentro da função, por exemplo:

function __autoload($class)
{
echo "A classe <b>{$class}</b> foi instânciada...";
}

Aqui um exemplo de chamada de classe, também falando o que vai ser enviado no parâmetro $class em cada caso:

$mysql = Connection::getInstance();//Neste caso o parametro $class se tornará a string "Connection"
//Ou
$xml = new MountXml;//Neste caso o parametro se tornará a string "MountXml"
//Ou
$player = new Player($id);//Neste caso o parametro se tornará a string "Player"

Bom aqui vai um exemplo dinâmico de uso:

Arquivo functions.php:

<?
function __autoload($class)
{
require_once("classes/".strtolower($class).".php");
}
?>

Arquivo index.php:

<?
include("functions.php");

$mysql = MysqlManager::getInstance();
?>

O exemplo acima, faria com que, antes que o sistema instânciasse a classe, ele daria um "include" no arquivo classes/mysqlmanager.php assim você não precisaria dar include sempre, atôamente em suas páginas.

 

Eu considero bem util, porque ai o sistema não perderia tempo lendo arquivo s em include que poderiam até não serem usados naquela hora.

 

Aqui um exemplo de chamada de classe, também falando o que vai ser enviado no parâmetro $class em cada caso:

$mysql = Connection::getInstance();//Neste caso o parametro $class se tornará a string "Connection"
//Ou
$xml = new MountXml;//Neste caso o parametro se tornará a string "MountXml"
//Ou
$player = new Player($id);//Neste caso o parametro se tornará a string "Player"

Você também pode fazer aquelas paradinhas chiques de erros xD:

Arquivo functions.php:

<?
function __autoload($class)
{
$arq = "classes/".strtolower($class).".php";
if(file_exists($arq))
{
	require_once("classes/".strtolower($class).".php");
}
else
{
	echo "Houve um erro no script, a class <b>{$class}</b> não foi encontrada";
	die();
}
}
?>

Arquivo index.php:

<?
include("functions.php");

$mysql = MysqlManager::getInstance();//Suponhamos que essa class exista,
// então o script seguiria corretamente

$lol = new LOLMuthaFucka($lol);//Aqui provavelmente então daria um erro que resultaria no seguinte:
//Houve um erro no script, a class LOLMuthaFucka não foi encontrada
?>

Duvidas? Mal explicado? Quer saber mais?

Comenta!

Até mais...

Felipe Moraes

Java Developer
avatar
Grão-Duque
Grão-Duque

INFOS

Grupo: Grão-DuqueRegistrado: 02/10/06Posts: 3285Gênero: Masculino

heauheuahe

entendi nada

mas ta valendo

~A nossa maior glória não reside no fato de nunca cairmos, mas sim em levantarmo-nos sempre depois de cada queda.~

 

 

 

 

Clique aqui para ver meus tutoriais !

 

 

 

Gamertag: cpmoraes

 

 

Sprit

Serviços Prestados ao XTibia
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 29/12/06Posts: 111Char no Tibia: King Unagi

Legal o conceito!!

 

POO comando, encapsulamento de código, é bom,

fica facil na hora de manutenção!! ^^

 

Show


"Se tem jeito fazemos, se não tem jeito, inventamos um jeito!! (By Drak)"