Ir para conteúdo

POWERED BY:

Arquivado

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

Caleg

Call to undefined method Clientes::incluir()

Recommended Posts

Boa tarde!

Estou criando um sistema de cadastro de clientes em poo. Já havia feito o mesmo cadastro utilizando outro banco de dados e outra classe e funcionou normalmente. Não entendo o que há de errado. O erro é: "Fatal error: Call to undefined method Clientes::incluir() in C:\wamp\www\workphpbackup\incluir.php on line 131"

 

usuarios.php - função incluir

class Clientes{

protected $nome;
protected $endereco;
protected $cep;
protected $cidade;
protected $estado;
protected $nascimento;
protected $cpf;
protected $telefone;
protected $email;
protected $login;
protected $senha;

static function conectar(){
$conexao= @mysql_connect("localhost","root","") or die("erro");
mysql_select_db("hotel") or die("erro no banco");
}

function incluir($nome, $endereco, $cep, $cidade, $estado, $nascimento, $cpf, $telefone, $email, $login, $senha){

	$this->nome       = $nome;
	$this->endereco   = $endereco;
	$this->cep        = $cep;
	$this->cidade     = $cidade;
	$this->estado     = $estado;
	$this->nascimento = $nascimento;
	$this->cpf        = $cpf;
	$this->telefone   = $telefone;
	$this->email      = $email;	
	$this->login      = $login;
	$this->senha      = $senha;

     $incluir = "INSERT INTO clientes(nome, endereco, cep, cidade, estado, nascimento, cpf, telefone, email, login,senha)VALUES('$nome', '$endereco', '$cep', '$cidade', '$estado', '$nascimento', '$cpf', '$telefone', '$email', '$login','$senha')";
     $resultado = mysql_query($incluir) or die("Die");
     echo "Dados incluidos com sucesso!<a href=login.php>Clique aqui</a> para logar.";

}
}
incluir.php

 

 

 

 

 

<?php

include "usuarios.php";
$ob         = new Clientes();
$nome       = $_POST['nome'];
$endereco   = $_POST['endereco'];
$cep        = $_POST['cep'];
$cidade     = $_POST['cidade'];
$estado     = $_POST['estado'];
$nascimento = $_POST['nascimento'];
$cpf        = $_POST['cpf'];
$telefone   = $_POST['telefone'];
$email      = $_POST['email'];
$login      = $_POST['login'];
$senha      = $_POST['senha'];
Clientes::conectar();
$ob->incluir($nome, $endereco, $cep, $cidade, $estado, $nascimento, $cpf, $telefone, $email, $login,$senha);

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

troque

$ob->incluir(..
para

$ob->Clientes::incluir(....

Não deu certo. ;-;

Apareceu:

Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM) in C:\wamp\www\workphpbackup\incluir.php on line 131

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou criando um sistema de cadastro de clientes em poo

Tem que mudar muita coisa para os códigos acima ser Oo, primeiro que você está misturando conexão com o BD com suas entidades, fazendo isso você quebra os princípios da Orientação Objeto e o viola Padrão DRY

 

Não vou entrar em detalhes sobre DRY, pois já existe dezenas de tópico falando a respeito.

 

 

Vamos ao código que faz a conexão com banco de dados

static function conectar(){
$conexao= @mysql_connect("localhost","root","") or die("erro");
mysql_select_db("hotel") or die("erro no banco");
}

Recomendo o uso da PDO para conexões, ou até mesmo mysqli, pois mysql_* está obsoleta e vai ser removido em breve em novas versões.

 

E fora das classes de entidades "Clientes", se você quiser ter outra entidade chamada "Endereco", como vai fazer esta conexão, vai copiar e colar?

 

O correto é instanciar a conexão

 

Exemplo com seu próprio código.

 

Conexao.php

<?
class Conexao {

	public function __construct() {
		$conexao= mysql_connect("localhost","root","") or die("erro");
		mysql_select_db("test", $conexao) or die("erro no banco");
	}
}

estendendo a conexão através da Classe


class Clientes extends Conexao{
	
	protected $nome;
	protected $endereco;
	protected $cep;
	protected $cidade;
	protected $estado;
	protected $nascimento;
	protected $cpf;
	protected $telefone;
	protected $email;
	protected $login;
	protected $senha;	

	function incluir(){

	

	}
}

ou vc pode chamar a conexão dentro da construct em uma entidade

public function __construct() {
 
   $this->db = new Conexao();

}

Esses dados abaixo, sem tratamento algum?

 

Deixa sua aplicação totalmente vulneral a qualquer tipo de ataque

$nome       = $_POST['nome'];
$endereco   = $_POST['endereco'];
$cep        = $_POST['cep'];
$cidade     = $_POST['cidade'];
$estado     = $_POST['estado'];
$nascimento = $_POST['nascimento'];
$cpf        = $_POST['cpf'];
$telefone   = $_POST['telefone'];
$email      = $_POST['email'];
$login      = $_POST['login'];
$senha      = $_POST['senha'];

uma função de higienização já resolve boa parte dos problemas

$nome = filter_var($_POST['nome'], FILTER_SANITIZE_STRING);

Outro problema é passar diversos parâmetros pela função

$ob->incluir($nome, $endereco, $cep, $cidade, $estado, $nascimento, $cpf, $telefone, $email, $login,$senha);

O uso de Getters e Setters resolve este problema com mais flexibilidade

<?php

class Clientes {
    
    public $nome;
    public $status;

    /**
     * @param mixed $nome
     */
    public function setNome($nome)
    {
        $this->nome = $nome;
    }

    /**
     * @return mixed
     */
    public function getNome()
    {
        return $this->nome;
    }

    /**
     * @param mixed $status
     */
    public function setStatus($status)
    {
        $this->status = $status;
    }

    /**
     * @return mixed
     */
    public function getStatus()
    {
        return $this->status;
    }
	
	/**
     * @return mixed
     */
    public function incluir()
    {        
		if(isset($this->nome)){
			$this->status = "Nome $this->nome incluido com sucesso no db";
		}				
    }
}

$cliente = new Clientes();

$cliente->setNome('Caleg');
$cliente->incluir();
echo $cliente->getStatus();

Te aconselho a escolher algum padrão de desenvolvimento, e estudar para melhor organizar seus códigos.

 

 

http://www.tutsup.com/2014/09/17/mvc-em-php-parte-1/

 

http://www.linhadecodigo.com.br/artigo/3466/trabalhando-com-data-access-object-dao-em-php.aspx

Uma dica para Oo.

 

É Trabalhar com Boas IDEs de desenvolvimento, boa partes de seus códigos podem ser gerados automaticamente para facilitar no desenvolvimento.

<?php
/**
 * Created by PhpStorm.
 * User: Williams Duarte
 * Date: 13/04/15
 * Time: 21:22
 */

class Clientes {

    public $nome;
    public $endereco;
    public $cep;
    public $cidade;
    public $estado;
    public $nascimento;
    public $cpf;
    public $telefone;
    public $email;
    public $login;
    public $senha;

    /**
     * @param mixed $cep
     */
    public function setCep($cep)
    {
        $this->cep = $cep;
    }

    /**
     * @return mixed
     */
    public function getCep()
    {
        return $this->cep;
    }

    /**
     * @param mixed $cidade
     */
    public function setCidade($cidade)
    {
        $this->cidade = $cidade;
    }

    /**
     * @return mixed
     */
    public function getCidade()
    {
        return $this->cidade;
    }

    /**
     * @param mixed $cpf
     */
    public function setCpf($cpf)
    {
        $this->cpf = $cpf;
    }

    /**
     * @return mixed
     */
    public function getCpf()
    {
        return $this->cpf;
    }

    /**
     * @param mixed $email
     */
    public function setEmail($email)
    {
        $this->email = $email;
    }

    /**
     * @return mixed
     */
    public function getEmail()
    {
        return $this->email;
    }

    /**
     * @param mixed $endereco
     */
    public function setEndereco($endereco)
    {
        $this->endereco = $endereco;
    }

    /**
     * @return mixed
     */
    public function getEndereco()
    {
        return $this->endereco;
    }

    /**
     * @param mixed $estado
     */
    public function setEstado($estado)
    {
        $this->estado = $estado;
    }

    /**
     * @return mixed
     */
    public function getEstado()
    {
        return $this->estado;
    }

    /**
     * @param mixed $login
     */
    public function setLogin($login)
    {
        $this->login = $login;
    }

    /**
     * @return mixed
     */
    public function getLogin()
    {
        return $this->login;
    }

    /**
     * @param mixed $nascimento
     */
    public function setNascimento($nascimento)
    {
        $this->nascimento = $nascimento;
    }

    /**
     * @return mixed
     */
    public function getNascimento()
    {
        return $this->nascimento;
    }

    /**
     * @param mixed $nome
     */
    public function setNome($nome)
    {
        $this->nome = $nome;
    }

    /**
     * @return mixed
     */
    public function getNome()
    {
        return $this->nome;
    }

    /**
     * @param mixed $senha
     */
    public function setSenha($senha)
    {
        $this->senha = $senha;
    }

    /**
     * @return mixed
     */
    public function getSenha()
    {
        return $this->senha;
    }

    /**
     * @param mixed $telefone
     */
    public function setTelefone($telefone)
    {
        $this->telefone = $telefone;
    }

    /**
     * @return mixed
     */
    public function getTelefone()
    {
        return $this->telefone;
    }
    
    
} 
function __construct()
    {
        // TODO: Implement __construct() method.
    }

    function __destruct()
    {
        // TODO: Implement __destruct() method.
    }

    function __call($name, $arguments)
    {
        // TODO: Implement __call() method.
    }

    public static function __callStatic($name, $arguments)
    {
        // TODO: Implement __callStatic() method.
    }

    function __get($name)
    {
        // TODO: Implement __get() method.
    }

    function __set($name, $value)
    {
        // TODO: Implement __set() method.
    }

    function __isset($name)
    {
        // TODO: Implement __isset() method.
    }

    function __unset($name)
    {
        // TODO: Implement __unset() method.
    }

    function __sleep()
    {
        // TODO: Implement __sleep() method.
    }

    function __wakeup()
    {
        // TODO: Implement __wakeup() method.
    }

    function __toString()
    {
        // TODO: Implement __toString() method.
    }

    function __invoke()
    {
        // TODO: Implement __invoke() method.
    }

    static function __set_state($an_array)
    {
        // TODO: Implement __set_state() method.
    }

    function __clone()
    {
        // TODO: Implement __clone() method.
    }

Abs

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.