Neste post vou explicar como salvar os dados do objeto. Vou utilizar o projeto anterior, onde criamos anteriormente a classe
conexao responsável por conectar no banco de dados. Agora vamos criar uma nova classe chamada
pessoa, no projeto
escola.
<?php
class pessoa {
}
?>
Os atributos da classe
pessoa semente para aprendizagem será
id,
nome e
endereco. A visibilidade destes atributos serão
protected.
<?php
class pessoa {
//atributos
protected $id;
protected $nome;
protected $endereco;
}
?>
Os atributos da classe
pessoa possuem visibilidade protected, significa que precisamos criar os métodos get e set, para facilitar criamos estes métodos primeiro.
<?php
class pessoa {
//atributos
protected $id;
protected $nome;
protected $endereco;
}
//métodos
public function getId() {
return $this->id;
}
public function setId($id) {
$this->id = $id;
}
public function getNome() {
return $this->nome;
}
public function setNome($nome) {
$this->nome = $nome;
}
public function getEndereco() {
return $this->endereco;
}
public function setEndereco($endereco) {
$this->endereco = $endereco;
}
?>
Com os métodos
get e
set criados, agora criamos o método
construtor. Neste método eu devo definir seus atributos como nulo, isso será útil quando explicarei o método selecionar, num post futuro. Eu crio primeiro os métodos
set e
get para beneficiar do
code complete do NetBeans, isso é verificado no vídeo que disponibilizo no post. Note que o método construtor eu devo utilizar os métodos
set's para atribuir os valores dos atributos.
<?php
class pessoa {
//atributos
protected $id;
protected $nome;
protected $endereco;
}
//métodos
public function __construct($id = null, $nome = null, $endereco = null) {
$this->setId($id);
$this->setNome($nome);
$this->setEndereco($endereco);
}
public function getId() {
return $this->id;
}
public function setId($id) {
$this->id = $id;
}
public function getNome() {
return $this->nome;
}
public function setNome($nome) {
$this->nome = $nome;
}
public function getEndereco() {
return $this->endereco;
}
public function setEndereco($endereco) {
$this->endereco = $endereco;
}
?>
Agora crio o método salvar, este método será responsável por salvar os valores dos atributos definidos no objeto que eu instanciar. No método salvar precisamos
instanciar um
objeto da classe
conexao que será responsável pela conexão ao banco. Com objeto da classe
conexao criado, devemos chamar o método
conectar. Este método irá chamar outros métodos que foram herdados da classe MySQLI, são eles:
- stmt_init() - Inicializa uma declaração e retorna um objeto para uso com prepare();
- prepare() - responsável para preparar o comando que será enviado para o SGBD;
- bind_param() - responsável por substituir os ? (pontos de interrogação) do método prepare() pelos valores, também devemos definir os tipos de dados que serão substituídos;
- execute() - enviar o comando para execução no SGBD;
- close() - fechar a conexão com o banco.
<?php
class pessoa {
//atributos
protected $id;
protected $nome;
protected $endereco;
}
//métodos
public function __construct($id = null, $nome = null, $endereco = null) {
$this->setId($id);
$this->setNome($nome);
$this->setEndereco($endereco);
}
public function getId() {
return $this->id;
}
public function setId($id) {
$this->id = $id;
}
public function getNome() {
return $this->nome;
}
public function setNome($nome) {
$this->nome = $nome;
}
public function getEndereco() {
return $this->endereco;
}
public function setEndereco($endereco) {
$this->endereco = $endereco;
}
public function salvar()
{
$con = new conexao('127.0.0.1', 'root', '', 'bdEscola');
$con->conectar();
$con->stmt_init();
$stmt = $con->prepare('insert into tbpessoa(nome, endereco) values(?, ?)');
$stmt->bind_param('ss', $this->getNome(), $this->getEndereco());
if($stmt->execute())
echo 'Registro salvo!';
else
echo 'Impossível salvar registro!';
$con->close();
}
?>
Agora para testar vamos incluir no início antes da declaração da
classe pessoa o arquivo
conexao. Isso é necessário pois vamos utilizar um objeto
conexao, para conectar ao banco.
<?php
include 'conexao.php';
class pessoa {
Agora instanciamos um objeto da classe pessoa para realizar o teste. Agora basta abrir no navegar o endereço da classe pessoa no navegador.
$p = new pessoa(null, 'Gloria Pires', 'Av. Copacabana, 1054');
@$p->salvar();
?>
Bom pessoal, é isso, disponibilizo abaixo código completo da classe pessoa e vídeo. Bom estudo!
<?php
include 'conexao.php';
class pessoa {
//atributos
protected $id;
protected $nome;
protected $endereco;
//métodos
function __construct($id = null, $nome = null, $endereco = null) {
$this->setId($id);
$this->setNome($nome);
$this->setEndereco($endereco);
}
public function getId() {
return $this->id;
}
public function setId($id) {
$this->id = $id;
}
public function getNome() {
return $this->nome;
}
public function setNome($nome) {
$this->nome = $nome;
}
public function getEndereco() {
return $this->endereco;
}
public function setEndereco($endereco) {
$this->endereco = $endereco;
}
public function salvar()
{
$con = new conexao('127.0.0.1', 'root', '', 'bdEscola');
$con->conectar();
$con->stmt_init();
$stmt = $con->prepare('insert into tbpessoa(nome, endereco) values(?, ?)');
$stmt->bind_param('ss', $this->getNome(), $this->getEndereco());
if($stmt->execute())
echo 'Registro salvo!';
else
echo 'Impossível salvar registro!';
$con->close();
}
}
$p = new pessoa(null, 'Gloria Pires', 'Av. Copacabana, 1054');
@$p->salvar();
?>