Instanciando um objeto Qua, 23 de janeiro de 2008 - as 22h29
Todas as entidades geradas devem extender a classe base de Lumine: a
Lumine_Base. Ela contém todos os dados e métodos necessários para que Lumine reconheça o banco, suas tabelas e como deve ser o procedimento com cada entidade individual.
Não é necessário realizar um include ou require desta classe, pois ela é automaticamente carregada quando se inicia a configuração com a classe
Lumine_Configuration.
Quando instanciada, a classe irá recuperar todos os dados concernentes a ela, sua referência no banco, suas propriedades, etc.
Abaixo um exemplo de uma classe gerada com a engenharia reversa:
<?php
#### START AUTOCODE
################################################################################
# Lumine - Database Mapping for PHP
# Copyright (C) 2005 Hugo Ferreira da Silva
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>
################################################################################
/**
* Classe generada para a tabela "hufersil_usuario"
* in 2008-01-17
* @author Hugo Ferreira da Silva
* @link http://www.hufersil.com.br/lumine
* @package entidades
*
*/
class Usuario extends Lumine_Base {
// sobrecarga
protected $_tablename = 'hufersil_usuario';
protected $_package = 'entidades';
/**
* Inicia os valores da classe
* @author Hugo Ferreira da Silva
* @return void
*/
protected function _initialize()
{
# nome_do_membro, nome_da_coluna, tipo, comprimento, opcoes
$this->_addField
('idusuario', 'idusuario', 'int', 11
, array('primary' => true, 'notnull' => true, 'autoincrement' => true));
$this->_addField
('nome', 'nome', 'varchar', 150
, array());
$this->_addField
('email', 'email', 'varchar', 150
, array());
$this->_addField
('senha', 'senha', 'varchar', 50
, array());
$this->_addField
('datacadastro', 'datacadastro', 'datetime', null, array());
}
/**
* Recupera um objeto estaticamente
* @author Hugo Ferreira da Silva
* @return void
*/
public static function staticGet($pk, $pkValue = null)
{
$obj = new Usuario;
$obj->get($pk, $pkValue);
return $obj;
}
#------------------------------------------------------#
# Coloque todos os métodos personalizado abaixo de #
# END AUTOCODE #
#------------------------------------------------------#
#### END AUTOCODE
}
?>
Note que existem duas linhas interessantes a se notar: ### START AUTOCODE e ### END AUTOCODE. Estes são delimitadores de código automático. Quando você quiser adicionar seus próprios métodos na classe, você poderá incluí-los sem problema algum, desde que eles fiquem fora destes dois delimitadores. Caso você necessite refazer a engenharia reversa, os métodos criados por você serão preservados.
Depois de carregada a configuração com o banco, você poderá chamar carregar as classes de 3 formas:
- Usando o método import da instância gerada por Lumine_Configuration;
- Usando o método estático Lumine::import( 'string_classname' ); ( * )
- Usando o método de compatibilidade com a versão anterior: Lumine_Util::Import( 'pacote.Entidade' );
( * ) Caso você tenha somente uma instância de Lumine_Configuration, ou seja, somente um banco de dados configurado.
Após instanciar um objeto, basta você trabalhar com eles como se fossem objetos normais, e posteriormente executar um dos métodos de persistência no banco: save, insert, update ou delete. Poderá também executar o métodos de pesquisa, como o find e get. Um exemplo abaixo:
// recupera o arquivo que faz a configuração de lumine
// descrita anteriormente em "inicializando a configuração"
require_once 'configuracao.php';
// Importa a classe pessoa
Lumine::import('Pessoa');
// instancia a classe pessoa
$pessoa = new Pessoa;
// atribui propriedades
$pessoa->nome = 'Hugo';
$pessoa->idade = 23;
$pessoa->cpf = '12345678912';
// salva o objeto no banco
$pessoa->save();
?>