Jump to content


Photo

Php Orientado à Objetos


  • Faça o login para participar
2 replies to this topic

#1 == MotoBoy ==

== MotoBoy ==

    12 Horas

  • Usuários
  • 133 posts
  • Sexo:Masculino
  • Localidade:Fortaleza (CE)

Posted 14/01/2009, 23:53

Olá Fórum !

Seguinte, tenho duas classes: classe01.class.php (Abstrata) e classe02.class.php (Classe normal)

Tipo, os métodos da classe01 são herdados para a classe02, usando o extends:

class Classe02 extends Classe01 {

...

}

Até aqui está tudo ok, mas por exemplo: Na classe Abstrata tenho um método construtor (__construct) e preciso colocar um construtor também na classe que herda os métodos. Como faço isso ?? Se faço normal ele dá erro.

Abraços !

#2 b1nhuu

b1nhuu

    Normal

  • Usuários
  • 99 posts
  • Sexo:Não informado
  • Localidade:Rio de Janeiro
  • Interesses:Programação

Posted 15/01/2009, 07:14

Como vc já tem um método construtor na class abstrata (ou tb superclasse), quando vc criar um construtor na outra vc vai ter passar os parâmetros que o método construtor da superclasse está esperando.

método construtor da classe Classe01:

__construct($num1,$num2)
{

}

O método construtor da classe Classe02 ficaria assim:

__construct($num1,$num2,$num3)
{
	  parent::num1 = $num1;
	  parent::num2 = $num2;
	  this->num3 = $num3;
}

Explicando: o parent é usado para referenciar a superclasse (abstrata). E para você usar o parent ele vem seguido dos 2 dois pontos ( :: ).

Esse exemplo é para te dar uma idéia somente. Caso com isso vc não consiga entender bem, poste a sua duvida com um exemplo em que vc não está conseguindo resolver e eu tento ajudar.

Espero ter ajudado.

[]'s

:assobio:

Edição feita por: b1nhuu, 15/01/2009, 07:16.

Aprender, aprender e aprender...

PHP orientado a objeto - Ok
Formação Java - Iniciando

#3 == MotoBoy ==

== MotoBoy ==

    12 Horas

  • Usuários
  • 133 posts
  • Sexo:Masculino
  • Localidade:Fortaleza (CE)

Posted 27/01/2009, 19:57

Opa! Desculpa a demora da resposta amigo....

Assim, o meu caso é o seguinte. Minha classe de conexão com Base de dados é assim:

abstract class ConexaoMySQL{

	protected $host, $usuario, $senha, $banco, $conn;
	
	public function __construct(){
	
		$this->host	= "localhost";
		$this->usuario = "root";
		$this->senha   = "";
		$this->banco   = "base";
		
		self::connect();
	
	}
	
	protected function connect(){
	
		$this->conn  = mysql_connect($this->host, $this->usuario, $this->senha) or die ("<strong>Erro ao conectar-se com Base de Dados: </strong>" . mysql_error());
		$this->banco = mysql_select_db($this->banco, $this->conn) or die ("<strong>Erro ao selecionar Base de Dados: </strong>" . mysql_error());
	
	}
	
}

Fiz assim, porque essa classe abstrata deverá ser herdada apenas para minhas classes de funções de SQL e já excutar o método connect() para conexão com a base. Então, a minha classe de funções seria isso (resumidamente):

include_once("ConexaoMySQL.class.php");

class FuncoesSQL extends ConexaoMySQL{
	
	public $qry, $num;
	
	public function setQuery($sql){ $this->qry = mysql_query($sql) or die ("<strong>Erro ao Executar Query: </strong>" . mysql_error()); }
	public function getQuery(){ return $this->qry; }
	
	public function fetchAssoc(){
	
		$this->reg = mysql_fetch_assoc($this->getQuery());
		return $this->reg;
	
	}
		...
		...
		...

}

Pronto, até aqui meu código é perfeito, roda 100%. Mas agora se eu criar outra classe, para usar essas funções, e por um método construtor que interesse somente para essa classe nova, ele dá erro. Como resolvo isso? Tem uma maneira melhor de fazer conexão com Base melhor do que essa que criei ?

Abraços !

Edição feita por: == MotoBoy ==, 27/01/2009, 19:59.





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq