Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá!
Fazo use de algumas classes para conexão e manipulação de banco de dados. Carrego as classes com uma __autoload criada no arquivo config.ini.php que carrego da seguinte forma:
require_once('_app/Config.inc.php');
Segue a função:
function __autoload($Class) {
$cDir = ['Conn', 'Helpers', 'Models'];
$iDir = null;
foreach ($cDir as $dirName):
if (!$iDir && file_exists(__DIR__ . DIRECTORY_SEPARATOR . $dirName . DIRECTORY_SEPARATOR . $Class . '.class.php') && !is_dir(__DIR__ . DIRECTORY_SEPARATOR . $dirName . DIRECTORY_SEPARATOR . $Class . '.class.php')):
include_once (__DIR__ . DIRECTORY_SEPARATOR . $dirName . DIRECTORY_SEPARATOR . $Class . '.class.php');
$iDir = true;
endif;
endforeach;
if (!$iDir):
trigger_error("Não foi possível incluir {$Class}.class.php", E_USER_ERROR);
die;
endif;
}
Tudo funciona muito bem. Mas agora estou criando relatorios em pdf usando a mpdf que instalei atravez do composer e se uso o include para incluir meu autoload e tb o autoload do composer da erro:
**Fatal error**: Uncaught Error: Class 'Read' not found in C:\wamp64\www\admincard\R_clientes.php:51 Stack trace: #0 {main} thrown in **C:\wamp64\www\admincard\R_clientes.php** on line **51**
a linha 51 é justamente a linha onde chamo a classe para ler o bando de dados pegando o conteudo de uma tabela.
como posso resolver isso? Desde já agradeço.em primeiro lugar, obrigado pela sua atenção.
Você conhece um gerador de PDF melhor que o mPDF()? Notei uma indiferença ao falar dele. Se conhecer por favor, me indique.
Quanto ao meu problema eu mudei o nome da minha funçãl Read para Read2e não mudou nada.
Perfeito, muito obrigado Omar~ !!!
Muito obrigado pela dica sobre a função spl_autoload_register. Atualizei minha função de autoload e resolveu o problema. Veja como ficou:
// AUTO LOAD DE CLASSES ####################
spl_autoload_register(
function($Class) {
$cDir = ['Conn', 'Helpers', 'Models'];
$iDir = null;
foreach ($cDir as $dirName):
if (!$iDir && file_exists(__DIR__ . DIRECTORY_SEPARATOR . $dirName . DIRECTORY_SEPARATOR . $Class . '.class.php') && !is_dir(__DIR__ . DIRECTORY_SEPARATOR . $dirName . DIRECTORY_SEPARATOR . $Class . '.class.php')):
include_once (__DIR__ . DIRECTORY_SEPARATOR . $dirName . DIRECTORY_SEPARATOR . $Class . '.class.php');
$iDir = true;
endif;
endforeach;
if (!$iDir):
trigger_error("Não foi possível incluir {$Class}.class.php", E_USER_ERROR);
die;
endif;
}
);
Mais uma vez, **muito obrigado!**Muito bom que resolveu.....
>
4 horas atrás, joao b silva disse:
Notei uma indiferença ao falar dele.
Sim.... Entorto o nariz para qualquer coisa que promete entregar algo que não passou por meu controle de qualidade (Que não foi eu mesmo quem fez).
Seguindo a arquitetura:
-
__DIR__ //> No mesmo diretório que está o arquivo que contém a função __autoload
-
DIRECTORY_SEPARATOR //> Separar diretório
-
$dirName // Em qualquer dos diretórios listados em $cDir
-
DIRECTORY_SEPARATOR //> Separar diretório
-
$Class . '.class.php' //> aquivo de classe .class .php
Então no mesmo local onde está a função deve haver os diretórios 'Conn', 'Helpers', 'Models' e dentro de um deles o arquivo Read.class.php
O arquivo está lá nesse local e dar erro se implementado esses tais pdf e mpdf.
É quase que certeza que em algum arquivo presente na composição desses aí existe um autoload funcionando que sobrescreve a sua função gerando conflito.
Se for o caso é só apagar a função conflitante e usar a outra.
Abra arquivo por arquivo que compõe pdf e mpdf e remova quaisquer includes e requires de classes que esses arquivo possam conter e use sua função.
A propósito o método mágico __autoload está obsoleto nas últimas versões do PHP você deve usar a função spl_autoload_register agora.
Exemplo de spl_autoload_register:
Spoiler
<?php
/**
* *********************************************************************
* @function: Função para auto carregamento de classes
* *********************************************************************
* @autor: Spell Master
* @copyright (c) 2014, Spell Master AND Zeed
* @vesion: 6.0 2021, Spell Master
* *********************************************************************
*/