Mapeamento Objeto-Relacional da Teoria à Prática
class.Categoria.php
Bom é isso, apesar de ser bem superficial, espero que tenha ajudado.
Quero dizer que você deve ler mais sobre este assunto pois é realmente muito importante e útil.
Vale a pena programar em PHP5!
Um abraço!
<?php
class CategoriaException extends Exception { }
/**
* Classe responsável pelo gerenciamento das informações de uma categoria
*
* @package MeuSistema
* @subpackage Categorias
* @author Diego Botelho <contato@diegobotelho.com>
* @link http://www.diegobotelho.com
* @date 2007-01-30 21:07:00
*/
class Categoria
{
/**
* @var int
* @access private
*/
private $cat_id;
/**
*
* @var string
* @access private
*/
private $cat_nome;
//----------------------------------------------------------------------
/**
* Seta o valor do atributo $cat_id
* @param int $intId
* @access public
*/
public function setId($intId)
{
$this->cat_id = $intId;
}
/**
* Obtém o valor do atributo $cat_id
* @access public
*/
public function getId()
{
return $this->cat_id;
}
/**
* Seta o valor do atributo $cat_nome
* @param int $strId
* @access public
*/
public function setNome($strNome)
{
$this->cat_nome = $strNome;
}
/**
* Obtém o valor do atributo $cat_nome
* @access public
*/
public function getNome()
{
return $this->cat_nome;
}
//----------------------------------------------------------------------
/**
* Construtor da classe
* @access public
*/
public function __construct()
{
$this->setId("");
$this->setNome("");
}
/**
* Destrutor da classe
* @access public
*/
public function __destruct() { }
/**
*
* Cadastra um nova categoria
* @access public
*/
public function cadastrar()
{
try {
DaoCategoria::insert($this);
} catch(Exception $e) {
throw new CategoriaException($e->getMessage());
}
}
/**
* Altera uma categoria existente
* @access public
*/
public function alterar()
{
try {
DaoCategoria::update($this);
} catch(Exception $e) {
throw new CategoriaException($e->getMessage());
}
}
/**
* Exclui uma categoria existente
* @access public
*/
public function excluir()
{
try {
DaoCategoria::delete($this);
} catch(Exception $e) {
throw new CategoriaException($e->getMessage());
}
}
/**
* Recupera uma categoria armazenado em meio persistente
* @access public
*/
public function carregar()
{
try {
DaoCategoria::load($this);
} catch(Exception $e) {
throw new CategoriaException($e->getMessage());
}
}
/**
* Retorna uma lista com as categorias cadastradas
* @access public
*/
public function listar()
{
try {
return DaoCategoria::collection($this);
} catch(Exception $e) {
throw new CategoriaException($e->getMessage());
}
}
}
?>
Bom é isso, apesar de ser bem superficial, espero que tenha ajudado.
Quero dizer que você deve ler mais sobre este assunto pois é realmente muito importante e útil.
Vale a pena programar em PHP5!
Um abraço!
Diego parabéns pelo artigo, excelente mesmo, são poucos que tem essa mentalidade de OO, muitos não sabem o que é e outros não sabem como implementar, esse seu artigo ficou muito bom, uma unica duvida que eu fiquei é de como q ficaria a implementação desse DAO, já ouvi falar disso mas não pesquisei nada ainda se puder colocar mais um artigo explanando sobre esse assunto acho q seria bem interressante, ou se tiver algum material e puder me enviar fico muito grato.
Parabéns.
Parabéns.
30/07/2007 9:11am
(~18 anos atrás)
Lembrando que o design pattern que você usou é o Active Record (http://www.martinfowler.com/eaaCatalog/activeRecord.html) e o Data Access Object (http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html).
No caso do Active Record, um ponto contra é que as rotinas de persistência estão fortemente acopladas ao objeto, o que pode não ser o cenário ideal para todas as situações. Algumas vezes é melhor separar as rotinas de cadastro, exclusão, seleção e atualização em um objeto separado. ;)