Ir para conteúdo

__autoload, Bem Interessante P/ Poo


biel-kun

Posts Recomendados

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

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...