Pesquisar na Comunidade
Mostrando resultados para as tags ''spl_autoload_register''.
Encontrado 1 registro
-
Olá pessoal. Tenho tido um problema ao chamar um método estático de uma classe singleton de conexao. Segue estrutura: |-Classes |-- Clientes.class.php |-- Conexao.class.php Index.php autoload.php Index.php <?php include "autoload.php"; use classes\Clientes; $cliente = new Clientes(); $getClientes = $cliente->getClientes(); echo '<pre>'; print_r($getClientes); autoload.php spl_autoload_register(function ($class) { require_once(str_replace('\\', '/', $class . '.class.php')); }); Clientes.class.php <?php namespace classes; class Clientes { public $conn; public function __construct(){ $this->conn = Conexao::getInstance(); } public function getClientes(){ $query = $this->conn->query("SELECT * FROM " . Conexao::getTabela('TB_CLIENTES')); foreach($query->fetchAll(PDO::FETCH_ASSOC) as $cliente) { $clientes = $cliente['cnpj'] . '<br>'; } return $clientes; } } Conexao.class.php <?php namespace classes; /** * Classe Singleton para Conexao ao banco de dados * * @author Marcos de P. Muniz * @version 1.0 */ class Conexao { /** * Instancia de conexao PDO * @var PDO */ private static $instance = null; /** * Tipo do banco de dados * * Pode ser: * <li>MySQL</li> * <li>PostgreSQL</li> * <li>SQL Server</li> * <li>Oracle</li> * <li>SQLite</li> * @var string */ private static $dbType = "mysql"; /** * Host do banco de dados * @var string */ private static $host = "127.0.0.1"; /** * Usuario de conexao ao banco de dados * @var string */ private static $user = "root"; /** * Senha de conexao ao banco de dados * @var string */ private static $senha = "usbw"; /** * Nome do banco de dados * @var string */ private static $db = "desknfe"; /** * Se a conexao deve ser persistente * @var boolean */ protected static $persistent = false; /** * Lista de tabelas do banco de dados * * Esta lista serve para padronizar a utilizacao das tabelas nas consultas * para caso seja necessario alterar o nome de alguma tabela o impacto na * programacao seja o minimo possivel. * @var array */ private static $tabelas = array( 'TB_CLIENTES' => 'clientes', 'TB_NFE' => 'nfe' ); /** * Retorna a instancia de conexao ao banco de dados * * Caso a instancia de conexao já exista, apenas a retorna, caso ainda * não exista, cria a instancia e a retorna. * * @return PDO */ public static function getInstance() { if(self::$persistent != FALSE) self::$persistent = TRUE; if(!isset(self::$instance)){ try { self::$instance = new \PDO(self::$dbType . ':host=' . self::$host . ';dbname=' . self::$db , self::$user , self::$senha , array(\PDO::ATTR_PERSISTENT => self::$persistent)); } catch (\PDOException $e) { exit ("Erro ao conectar com o banco de dados: " . $e->getMessage()); } } return self::$instance; } /** * Fecha a instancia de conexao ao banco de dados */ public static function close() { if (self::$instance != null) self::$instance = null; } /** * Retorna a tabela correspondente a chave informada. * * @param string $chave Nome da chave do array $tabelas que armazena a tabela a ser retornada * @return string */ public static function getTabela($chave) { return self::$tabelas[$chave]; } } Quando a classe Clientes é instanciada dá o seguinte erro: Warning: require_once(classes/PDO.class.php): failed to open stream: No such file or directory in C:\DeskNFe\root\nfe\autoload.php on line 4 Fatal error: require_once(): Failed opening required 'classes/PDO.class.php' (include_path='.;C:\php\pear') in C:\DeskNFe\root\nfe\autoload.php on line 4 Utilizando fora do namespace, funciona normalmente. Alguém pode enxergar meu erro no código? Obg.
-
- classe
- spl_autoload_register
- (e %d mais)