PHP Duvida orientação a objeto

1. PHP Duvida orientação a objeto

José Luiz Abreu Cardoso Junior
junior-kun

(usa Ubuntu)

Enviado em 21/02/2012 - 00:26h

boa noite eu to com uma duvida em um site q to fazendo pra aprende orientação a objeto em php, so q meu site tah encrencando em algum lugar e entrando em uma chamada infinita de metodos, segue abaixo o codigo, o erro q aparece eh esse Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 6144 bytes) in C:\xampp\htdocs\PHP\Classes\Marca.php on line 43

1ºMarcaSite:
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<title>HTML5 - Estrutura Básica</title>

</head>

<body>
<form method="post" action="CadastraMarca.php">
<label for="txtDescricao">Descrição:</label>
<input type="text" id="txtDescricao" name="txtDescricao">
<br>
<input type="submit" value="Inserir">
</body>

</html>

2ºCadastraMarca
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<title>HTML5 - Estrutura Básica</title>

</head>

<body>
<?php
include_once ("../Classes/Marca.php");
$Marca = new Marca();
$Marca->getDescricao($_POST['txtDescricao']);
$Marca->Inserir();
?>
</body>

</html>


3ºMarca
<?php
include ('../ClassesBD/MarcaBD.php');
class Marca
{
private $codMarca;
private $descricao;

public function getCodMarca ($codMarca)
{
$this->codMarca = $codMarca;
}

public function setCodMarca ()
{
return ($codMarca);
}

public function getDescricao ($descricao)
{
$this->descricao = $descricao;
}

public function setDescricao ()
{
return ($descricao);
}

public function Inserir()
{
return (MarcaBD::inserir($this));
}

public function Alterar()
{
return (MarcaBD::alterar($this));
}

public function Excluir()
{
return (MarcaBD::excluir($this));
}

public static function selecionarUm($codMarca)
{
return (MarcaBD::selecionarUm($codMarca));
}

public static function selecionarTodo()
{
return (MarcaBD::selecionarTodos());
}

}



?>

4ºMarcaBD
<?php

include('../Classes/Marca.php');
include ('Conexao.php');
class MarcaBD
{
public static function selecionarUm ($codMarca)
{
try{
$conexao = new Conexao();
$query=mysql_query("SELECT * FROM VIEWMARCAS where MAR_CODIGO ='$codMarca'");

if ($linha=mysql_fetch_array($query)) {

$novaMarca = new Marca();
$novaMarca->setDescricao($query("mar_descricao"));

return(novaAcao);

}
}catch( Exception $excecao){
?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
alert ("Erro no metodo Selecionar da marca!")
</SCRIPT>
<?php
return (null);
}



}

public static function selecionarTodos ()
{
$vetMarcas = array();

try{
$query=mysql_query("SELECT * FROM VIEWMARCAS");
while($acao=mysql_fetch_array($query)){
$novaMarca = new Marca();
$novaMarca->setDescricao($query("mar_descricao"));

$vetMarcas[]=$novaMarca;
}
return($vetMarcas);

}catch( Exception $excecao){
?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
alert ("Erro no metodo Selecionar todas as marcas! <?=$excecao->getMessage()?>")
</SCRIPT>
<?php
return (null);
}
}

public static function inserir ($novoMarca)
{
try{
$conexao = new Conexao();
$novaMarca = new Marca();

$query=mysql_query("{call IN_PRC_MAR_MARCAS (?)}");
$query(1, getDescricao());

$query->execute();
return(true);

}catch(Exception $excecao){
?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
alert ("Erro no metodo Inserir marca! <?=$excecao->getMessage()?>")
</SCRIPT>
<?php
return(false);
}
}

public static function alterar ($novaMarca)
{
try{
$conexao = new Conexao();
$novaMarca = new Marca();

$query=mysql_query("{call AL_PRC_MAR_MARCAS (?,?)}");
$query(1, getCodMarca());
$query(2, getDescricao());

$query->execute();
return(true);

}catch(Exception $excecao){
?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
alert ("Erro no metodo Alterar ação! <?=$excecao->getMessage()?>")
</SCRIPT>
<?php
return(false);
}
}

public static function excluir ($novaMarca)
{
try{
$conexao = new Conexao();
$novaMarca = new Marca();

$query=mysql_query("{call DEL_PRC_MAR_MARCAS (?)}");

$query(1, setCodMarca());

return(true);

}catch(Exception $excecao){
?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
alert ("Erro no metodo Excluir marca! <?=$excecao->getMessage()?>")
</SCRIPT>
<?php
return(false);
}
}

}



?>

5ºConexao
<?php


$conexao=mysql_connect("Localhost","root","");
$db=mysql_select_db("loja",$conexao);




?>


  


2. Ola junior-kun boa tarde

Rodrigo Kulb
rodrigoKUlb

(usa Ubuntu)

Enviado em 21/02/2012 - 12:57h

Esta bem difícil de identificar, pois o código aqui no fórum ficou estranho.

Orientação Objeto é muito simples.

Fiz um vídeo a muito tempo atras sobres essa assunto da uma olhadinha para ver se te ajuda.

http://www.youtube.com/watch?v=rdYWNdwn3_U




3. Re: PHP Duvida orientação a objeto

José Luiz Abreu Cardoso Junior
junior-kun

(usa Ubuntu)

Enviado em 21/02/2012 - 13:21h

eh tem razão, num tinha notado q o codigo perdeu a identação, entaum vo posta as pertas do codigo envolvidas no processo q to testando, dei uma melhorada com comentarios nas chaves pra mostra onde fecha e abre o q, akele modelo da video aula em camadas 1 e 2 interface, 3 classe, o meu so tem uma quarta camada a + q eh a camada q faz comunicação com o banco :

1
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<title>HTML5 - Estrutura Básica</title>

</head>

<body>
<form method="post" action="CadastraMarca.php">
<label for="txtDescricao">Descrição:</label>
<input type="text" id="txtDescricao" name="txtDescricao">
<br>
<input type="submit" value="Inserir">
</body>

</html>


2
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<title>HTML5 - Estrutura Básica</title>

</head>

<body>
<?php
include_once ("../Classes/Marca.php");
$Marca = new Marca();
$Marca->getDescricao($_POST['txtDescricao']);
$Marca->Inserir();
?>
</body>

</html>

3
<?php
include ('../ClassesBD/MarcaBD.php');
class Marca
{/*abre a classe*/
private $codMarca;
private $descricao;

public function getCodMarca ($codMarca)
{/*abre a função getCodMarca*/
$this->codMarca = $codMarca;
}/*fecha a função getCodMarca*/

public function setCodMarca ()
{/*abre a funçã setCodMarca*/
return ($codMarca);
}/*fecha a função setCodMarca*/

public function getDescricao ($descricao)
{/*abre a função getDescricao*/
$this->descricao = $descricao;
}/*fecha a função getDescricao*/

public function setDescricao ()
{/*abre a função setDescricao*/
return ($descricao);
}/*fecha a função setDescricao*/

public function Inserir()
{/*abre a função inserir q chama o inserir da outra classe q insere no banco de dados*/
return (MarcaBD::inserir($this));
}/*fecha a função inserir*/
}/*1*/


4
public static function inserir ($novoMarca)
/*abre funçao*/{
try{/*abre o try*/
$conexao = new Conexao();
$novaMarca = new Marca();

$query=mysql_query("{call IN_PRC_MAR_MARCAS (?)}");
$query(1, getDescricao());

$query->execute();
return(true);

/*fecha o try*/}catch(Exception $excecao){/*abre o catch*/
?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
alert ("Erro no metodo Inserir marca! <?=$excecao->getMessage()?>")
</SCRIPT>
<?php
return(false);
}/*fecha o catch*/
/*fecha funçã*/}


4. Re: PHP Duvida orientação a objeto

José Luiz Abreu Cardoso Junior
junior-kun

(usa Ubuntu)

Enviado em 21/02/2012 - 13:33h

o problema eh q algum metodo A esta chamando um metodo B q chama d novo esse A q chama o B e assim nunca sai do codigo


5. Vamos ver se eu entendi

Rodrigo Kulb
rodrigoKUlb

(usa Ubuntu)

Enviado em 21/02/2012 - 19:06h

Você tem 4 arquivos.


1 - formulario.php
2 - CadastraMarca.php
3 - Marca.php
4 - MarcaBD.php

Eu não entendi porque você esta fazendo um monte de métodos para carregar os valores dos atributos.


Você pode simplificar esse código:
include_once ("../Classes/Marca.php");

$Marca = new Marca();
$Marca->descricao = $_POST['txtDescricao']; //IGUALANDO DIRETO O ATRIBUTO.
$Marca->Inserir();

Eu acredito que o ERRO esta aqui:

return (MarcaBD::inserir($this)); // PORQUE VOCÊ ESTA ENVIANDO O OBJETO INTEIRO ??

Envia somente o necessário exemplo
return (MarcaBD::inserir($this->descricao));

Também não entendi muito sua classe MarcaBD.php ??

abraços.








6. Re: PHP Duvida orientação a objeto

José Luiz Abreu Cardoso Junior
junior-kun

(usa Ubuntu)

Enviado em 21/02/2012 - 19:15h

acabei achando um erro graças a vc kra


4
public static function inserir ($novoMarca)
/*abre funçao*/{
try{/*abre o try*/
$conexao = new Conexao();
$novaMarca = new Marca();

$query=mysql_query("{call IN_PRC_MAR_MARCAS (?)}");
$query(1, getDescricao());

$query->execute();
return(true);

/*fecha o try*/}catch(Exception $excecao){/*abre o catch*/
?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
alert ("Erro no metodo Inserir marca! <?=$excecao->getMessage()?>")
</SCRIPT>
<?php
return(false);
}/*fecha o catch*/
/*fecha funçã*/}

logo dpois q eu do um call na procedure d insert teria q tah assim
$query(1, $novaMarca->setDescricao);
estava errado pq eu num tava chamando o objeto da variavel nova marca e q eu tinha q chama o metodo set e naum o get da descrição

mas entaum o codigo funfa assim eu insiro uma descrição na pagina, ele m manda pra otra pagina q faz o envio da descrição pra classe marca e chama o metodo inserir, eu passo o objeto td pro metodo inserir pra lah o metodo inserir jogar cada campo do objeto no item correspondente da tabela do banco, esse aew tah pequeno 1 campo e o otro eh auto incremento, mas tem otros objetos d uns 8 campos fora a chave primaria, eh por isso q passo o objeto inteiro pra classe da MarcaBD






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts