Deprecated: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead. in /home/hufersil/hufersil.com.br/system/libraries/lumine/lib/Connection/MySQL.php on line 516
HUFERSIL WEBDEVELOPER - Instanciando um objeto

HUFERSIL.WEBDEVELOPER - SoluƧƵes com qualidade - Hugo Ferreira da Silva

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:

  1. <?php
  2. #### START AUTOCODE
  3. ################################################################################
  4. #  Lumine - Database Mapping for PHP
  5. #  Copyright (C) 2005  Hugo Ferreira da Silva
  6. #  
  7. #  This program is free software: you can redistribute it and/or modify
  8. #  it under the terms of the GNU General Public License as published by
  9. #  the Free Software Foundation, either version 3 of the License, or
  10. #  (at your option) any later version.
  11. #  
  12. #  This program is distributed in the hope that it will be useful,
  13. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. #  GNU General Public License for more details.
  16. #  
  17. #  You should have received a copy of the GNU General Public License
  18. #  along with this program.  If not, see <http://www.gnu.org/licenses/>
  19. ################################################################################
  20. /**
  21.  * Classe generada para a tabela "hufersil_usuario"
  22.  * in 2008-01-17
  23.  * @author Hugo Ferreira da Silva
  24.  * @link http://www.hufersil.com.br/lumine
  25.  * @package entidades
  26.  *
  27.  */
  28.  
  29. class Usuario extends Lumine_Base {
  30.  
  31.     // sobrecarga
  32.     protected $_tablename = 'hufersil_usuario';
  33.     protected $_package   = 'entidades';
  34.  
  35.     /**
  36.      * Inicia os valores da classe
  37.      * @author Hugo Ferreira da Silva
  38.      * @return void
  39.      */
  40.     protected function _initialize()
  41.     {
  42.         # nome_do_membro, nome_da_coluna, tipo, comprimento, opcoes
  43.        
  44.         $this->_addField('idusuario', 'idusuario', 'int', 11, array('primary' => true, 'notnull' => true, 'autoincrement' => true));
  45.         $this->_addField('nome', 'nome', 'varchar', 150, array());
  46.         $this->_addField('email', 'email', 'varchar', 150, array());
  47.         $this->_addField('senha', 'senha', 'varchar', 50, array());
  48.         $this->_addField('datacadastro', 'datacadastro', 'datetime', null, array());
  49.  
  50.        
  51.     }
  52.  
  53.     /**
  54.      * Recupera um objeto estaticamente
  55.      * @author Hugo Ferreira da Silva
  56.      * @return void
  57.      */
  58.     public static function staticGet($pk, $pkValue = null)
  59.     {
  60.         $obj = new Usuario;
  61.         $obj->get($pk, $pkValue);
  62.         return $obj;
  63.     }
  64.  
  65.     #------------------------------------------------------#
  66.    # Coloque todos os mĆ©todos personalizado abaixo de     #
  67.    # END AUTOCODE                                         #
  68.    #------------------------------------------------------#
  69.    #### END AUTOCODE
  70.  
  71.  
  72. }
  73. ?>

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:

  1. // recupera o arquivo que faz a configuraĆ§Ć£o de lumine
  2. // descrita anteriormente em "inicializando a configuraĆ§Ć£o"
  3. require_once 'configuracao.php';
  4.  
  5. // Importa a classe pessoa
  6. Lumine::import('Pessoa');
  7.  
  8. // instancia a classe pessoa
  9. $pessoa = new Pessoa;
  10.  
  11. // atribui propriedades
  12. $pessoa->nome = 'Hugo';
  13. $pessoa->idade = 23;
  14. $pessoa->cpf = '12345678912';
  15.  
  16. // salva o objeto no banco
  17. $pessoa->save();
  18.  
  19. ?>