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