Ir para conteúdo
Fórum Script Brasil
  • 0

A mágica do spl_auto_register


Frank K Hosaka

Pergunta

Ontem o Omar do iMaster me apresentou a função spl, ele é ótimo para quem está estudando MVC. Ele é mais ou menos assim:

function my_autoloader($class){include 'model/'.$class.'.php';}
spl_autoload_register('my_autoloader');

Eu hospedei o código no index.php. Se você for tentar chamar uma classe assim $produto=new produto() e se ele não encontrar a classe, nesse caso, o PHP vai procurar a solução no spl_autoload, nesse caso particular ele vai procurar o arquivo model/produto.php.

Eu gostei dessa função, assim eu fiquei imaginando em usar a função para abrir um arquivo da pasta view, por exemplo, o viewMenu. O viewMenu não é uma classe, mas sim um formulário. Mesmo assim, o truque funciona, assim:

function my_autoloader($class){
	if(substr($class,0,4)=="view"){
		require 'View/'.$class.'php';}
spl_autoload_register('my_autoloader');

Para fazer funcionar, eu escrevi $view=new viewMenu( ). E funcionou!

Esse é um recurso super bacana, bem como as constantes do define('constante','valor'). O problema é que o ciclo de vida deles é bem curto. Qualquer solicitação post ou get acaba com a vida deles. O mesmo drama acontece com as classes do MVC.

Pesquisei um pouco mais o PHP e ouvi dizer que existe uma extensão chamada phpize que dá vida a essas mágicas para todos os módulos do PHP, mas na hora de procurar na internet, eu não achei a extensão para o Windows.

Além de não achar a extensão, eu descobri que a função right( ) e left( ) não funcionam no meu código, apesar da versão ser 8.2. Eu tive que trocar por substr($variavel,0,4) para os primeiros quatro caracteres da esquerda e substr($variavel,-4) para os quatro últimos caracteres da direita.

Enfim, não me resta outra escolha senão continuar com a minha improvisação, usar a minha imaginação para dar mais vida a uma variável local o máximo que eu puder.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...