Ir para conteúdo

POWERED BY:

Arquivado

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

André Baptista

: Classe e Objeto

Recommended Posts

Bom dia pessoal beleza? Bom eu estou estudando Classes e Objetos a pouco tempo, mas.. seguinte

eu estava tentando montar uma classe de conexão.. só que dai na hora de instanciar

um objeto aparece um erro que não consegui resolver :(

Erro:

Parse error: parse error, unexpected T_VARIABLE in C:\Arquivos de programas\EasyPHP 2.0b1\www\estudo\02\testa.php on line 5

 

abaixo a class_conecta_db.php

<?php

	class ConexaoMySql
	{
		public $host	= "localhost";
		public $user	= "root";
		public $pass	= "";
		public $mybase  = "test";
		public $con	 = "";
		public $query   = "";

		public function conexao()
		{
			$this->con = mysql_connect($this->host,$this->user,$this->pass);
			if (!$this->con)
			{
				die("Erro na conexão");
			}
			elseif (!mysql_select_db($this->con))
			{
				die("Erro na conexão");
			}
		 }

		public function sql($query)
		{
			$this->query = $query;
			if ($resultado = mysql_query($this->query, $this->con)) {
				return $resultado;

				} else {
						return 0;
				}
		}

		public function id()
		{
			return mysql_insert_id($this->con);
		}

		public function fechar()
		{
			return mysql_close();
		}
		}

?>

abaixo o arquivo onde eu instancio o objeto.. chamei de testa.php:

<?php
	include("class_conecta_db.php")

###$ObjConexao = new ConexaoMySql; (tentei instanciar o obj assim, mas apresentou o mesmo erro :()
  $ObjConexao = new conexao();

  $result = $ObjConexao->sql("select * from pessoas");
  while($lista = mysql_fetch_array($result)) {
  printf($lita,[0], $lista[1], $lista[2]);   
  }
  $ObjConexao->fechar();

  ?>

desde já agradeço.. :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Além do que o Bruno disse, olha isso:

 

printf($lita,[0], $lista[1], $lista[2]);

?????????????????????

 

não seria:

 

printf($lita[0], $lista[1], $lista[2]);
??????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está fugindo um pouco do conceito de orientação a objetos.

Uma classe com o nome class_conecta_db, deve simplesmente fazer uma conxão, para ser coerente com o nome, e tem haver com encapsulamento.

Outra coisa, existe algumas recomendações com relação a nomenclatura.

De acordo com as recomendações, o arquivo deveria se chamar: NomeDaClasse.class.php. Isso favorece a utilização de autoload de objetos. Observe o nome

da classe com as iniciais em maiúsculo, sem o uso de underscores, e a extensão .class.php.

Observe também que o nome da classe inicia-se com um 'T', significando 'type', ou seja, gera instantância de um 'tipo'. Se fosse uma interface, iniciaria com 'I'.

 

Veja um exemplo de uma classe para conexão que sempre utilizo:

 

<?php
/**
 * @file: TConnection.class.php
 */
class TConnection
{
	public function __construct($host=DB_HOST, $user=DB_USER, $pass=DB_PASS, $dbname=DB_NAME)
	{
		mysql_connect($host, $user, $pass);
		mysql_select_db($db_name);
	}
}
Observe que o arquivo não contém a tag de fechamento do php (?>) que também é uma recomendação.

 

Um exemplo de utilização da mesma:

new TConnection;

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu pelas ajudas...

 

beleza, vou continuar a estudar para nao cometer novamente estes erros basicos..

 

mas depois de algumas correções

mas eu consegui fazer funcionar meu POG ali

:D

 

 

eu sei q a classe estava bem bagunçada e que nao segue os padroes..

 

mas eu fiz ali pra eu poder ver como funcionar.. instanciando, consultando.. essas coisas..

mas ctz quando farei um proximo post de ajuda..

vou procurar verificar se esta tudo nos conformes :D

 

 

abraços..

Compartilhar este post


Link para o post
Compartilhar em outros sites

aproveitando o tópico..

 

nessa classe TConnection:

<?php
/**
* @file: TConnection.class.php
*/
class TConnection
{
	public function __construct($host=DB_HOST, $user=DB_USER, $pass=DB_PASS, $dbname=DB_NAME)
	{
		mysql_connect($host, $user, $pass);
		mysql_select_db($db_name);
	}
}

eu posso apenas instanciar o objeto para realizar a conexão com o banco? Seria isso?

$obj = new TConnection;

E também eu posso incluir um comando para desconectar também.. tipo este aqui:

public function desconectar()
{
	mysql_close();
}

abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

como você esta usando uma funcao construtora, eh assim mesmo, so instanciar, so q ela usaria os valores default para a conexao...

 

mas você tb pode mudar isso com

 

$con = new TConection($host, $user, $pass);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, não precisa atribuir a instancia a nenhuma variável, basta construí-la

new TConnection;
No caso, eu carrego um arquivo de configurações antes de chamar o TConnection, que contém as constantes usadas:

define('DB_HOST', 'localhost');
define('DB_USER', 'site');
define('DB_PASS', 'senha');
define('DB_NAME', 'banco');
Como as contantes tem escopo global, são visíveis na classe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas na mesma classe de conexão ficaria correto eu acrescentar uma função pra desconectar o banco?

tipo..

 

public function desconectar()
{
	mysql_close();
}

ou teria que fazer uma Classe chamada Desconectar.class.php ?

 

abraço!

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.