Neste post vou mostrar como resolvi o conflito do smarty com a função __autoload() do PHP.

Quando ativamos o autload do Smarty definindo o SMARTY_SPL_AUTOLOAD antes de instanciar a classe do Smarty:

define('SMARTY_SPL_AUTOLOAD', 1);

Acontece o seguinte erro para as versões PHP inferiores a 5.3:

Fatal error: spl_autoload() [<a href=’function.spl-autoload’>function.spl-autoload</a>]:

Para corrigir este problema precisaremos utilizar a seguinte estrutura:

//Smarty Templates
require('../smarty/libs/Smarty.class.php');

$smarty = new Smarty;

$smarty->debugging = true;
$smarty->caching = true;
$smarty->cache_lifetime = 120;
$smarty->template_dir = '../templates/';
$smarty->compile_dir = '../smarty/templates_c/';
$smarty->config_dir = "../smarty/configs/";
$smarty->cache_dir = "../smarty/cache/";

//ativando classe auto load
spl_autoload_register('__autoload');

Importamos o Smarty.class.php, Instanciamos a classe, definimos os parametros iniciais de acordo com a necessisdade de cada aplicação e ai sim setamos qual será a função para autoload. No meu casou estou utilizando a própria função __autoload() nativa do PHP.

Isso é necessário pois o Smarty usa sua própria função para fazer o autoload das suas funções e seta como default a função dele, por isso após instanciar o smarty precisamos setar devolta para a default do PHP.

Compartilhe:

One thought to “Utilizando __autoload no Smarty
Fatal error: spl_autoload() [function.spl-autoload]”

  • Marcos P Motta

    Estou usando o Smarty e o __autoload não funcionava, fiz como vc flw, e coloquei a spl_autoload_register(‘__autoload’); no config do Smarty, e td certo agora, vlw mesmo.

    Responder

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *