Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vinles

POO - Fatal error: Call to undefined method

Recommended Posts

Eae pessoal, de novo esse erro que me persegue =x

 

Estou tendo um erro ao tentar acessar o método de uma instancia de objeto dentro de outra classe;

 

erro:

Fatal error: Call to undefined method Config::get_db_type() in C:\xampp\htdocs\wyd\class\DataBase.php on line 39

 

eu não sei pq ele fala que não foi definido, está tudo certo a estrutura, o erro da quando eu tento instanciar a classe DataBase, as classes eu deixo tudo separado em um diretório ja pra evitar esses erros, mas não sei oque fazer.

 

 

Config.php

<?php

/**
 * Classe armazena informações de configuração
 *
 * 
 */
class Config
{
	private $db_type;
	private $db_host;
	private $db_port;
	private $db_name;
	private $db_user;
	private $db_password;

	function  __construct()
	{

	   $this->db_type="mysql";
	   $this->db_host="192.168.1.1";
	   $this->db_port=3306;
	   $this->db_name="";//removido valor
	   $this->db_user="";//removido valor
	   $this->db_password="";//removido valor

	}

	public function get_db_type()
	{
		return $this->db_type;
	}
	
	public function get_db_host()
	{
		return $this->db_host;
	}

	public function get_db_port()
	{
		return $this->db_port;
	}

	public function get_db_name()
	{
		return $this->db_name;
	}

	public function get_db_user()
	{
		return $this->db_user;
	}

	public function get_db_password()
	{
		return $this->db_password;
	}

}

?>

DataBase.php

<?php
require_once 'Config.php';

/**
 * Classe para acesso ao banco de dados do sistema
 *
 * 
 * @access public
 */
class DataBase
{


	private $db_type;
	private $db_host;
	private $db_port;
	private $db_name;
	private $db_user;
	private $db_password;
	/**
	 *
	 * @var Config
	 */
	private $config;


	/**
	 *
	 * @var PDO
	 */
	private $cnn;

	/**
	 *
	 */
	function __construct() 
	{
		$this->config = new Config();

		$this->db_type = $this->config->get_db_type();
		$this->db_host =  $this->config->get_db_host();
		$this->db_port =  $this->config->get_db_port();
		$this->db_name =  $this->config->get_db_name();
		$this->db_user =  $this->config->get_db_user();
		$this->db_password = $this->config->get_db_password();

		
	}
	//RESTO DA CLASSE
   //  .
   //  .
   //  .

	
}
?>

Agradeço deis de já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui funcionou corretamente...

 

Fiz um arquivo teste

<?php
error_reporting(E_ALL);
require_once 'DataBase.php';

$base = new DataBase();
echo '<pre>';
print_r($base);
echo '</pre>';
?>

e teve essa saída:

DataBase Object
(
	[db_type:private] => mysql
	[db_host:private] => 192.168.1.1
	[db_port:private] => 3306
	[db_name:private] => 
	[db_user:private] => 
	[db_password:private] => 
	[config:private] => Config Object
		(
			[db_type:private] => mysql
			[db_host:private] => 192.168.1.1
			[db_port:private] => 3306
			[db_name:private] => 
			[db_user:private] => 
			[db_password:private] => 
		)

	[cnn:private] => 
)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se roda ai normal pq aqui não? o que pode ser o problema, esse negocio ta me atrazando de mais.

 

 

edit: se eu coloco ambos no mesmo arquivo vai de boa mas se eu incluo ele n vai =x

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

alguma alma pode me ajudar com isso, eu tenho que definir alguma coisa pra funcionar? por que não está dando certo só aqui?

 

porfavor me ajudem com isso!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma perguntinha "inútil"

- os arquivos estão no mesmo diretório ?

 

 

Já tentasse ligar o error_reporting pra ver se dá mais algum erro ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

aff achei o problema talvez um debug no momento tive-se ajudado vo postar o que era por mesmo dando certo, eu ainda não entendi direito o por que.

 

estrutura das pastas:

+class

---Account.php

---Config.php

---DataBase.php

 

teste.php

 

 

no arquivo DataBase.php eu incluia o arquivo Config.php, usando require_once.

Ai no arquivo teste.php eu incluia o DataBase.php por que ia instanciar uma classe dela.

 

Em fim depois que alterei o require_once do arquivo DataBase.php de 'Config.php' para 'class/Config.php' deu certo.

 

Isso que não entendo se eu incluo o database na teste(class/DataBase.php) o caminho sem a pasta deveria funcionar por que antes de eu incluir ele no teste.php se encontravam no mesmo diretório.

 

Em fim tem como eu definir alguns diretório onde o php deve procurar os arquivo que eu incluo no require_once ou no include?

Ou Alguma dica para evitar esses problemas?

 

Puts não to me conformando até agora que é esse erro, realmente nunca pensei que poderia ser isso.

 

Obrigado galera espero que alguem possa me ajudar a evitar essas coisas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funciona, to incluindo tudo agora no arquivo que for usar, ai incluo antes, pelomenos diminui problemas como esse. Bom seria setar diretórios que ele pode encontrar os arquivos ai ficaria melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.