Lumine com CodeIgniter
Várias pessoas já me perguntaram como integrar o Lumine ao CodeIgniter. Hoje, vamos estudar como é simples fazer esta integração.
Para começarmos, baixe a última versão do CodeIgniter e de Lumine.
O caminho base (class-path) para este tutorial será "/www/exemplos/ci".
Descompacte o CodeIgniter na class-path do tutorial.
Descompacte Lumine dentro do diretório de bibliotecas do CodeIgniter. O diretório deverá ficar "/www/exemplos/ci/system/application/libraries/lumine", como na imagem abaixo:

Na engenharia reversa de Lumine, já existe uma pré-configuração para esta "dobradinha". Na aba "Dados Principais", na opção "Modelo de configuração", escolha "CodeIgniter With MySQL".
Automaticamente, todas as outras opções necessárias para gerar as classes para utilização com o CodeIgniter serão geradas.
As opções preenchidas são:
- Pacote das classes: é direcionado para o diretório padrão de models do CodeIgniter onde ficam as models, porém, as classes de Lumine que você conhece serão classes DAO (Data Access Objects) e Lumine também gera as classes para Models (veremos a seguir).
- Em Integração:
- Criar models?: esta opção vem preenchida para que Lumine possa gerar classes "Models", para seguir o padrão MVC (Model-View-Controller). Para que uma controller não tenha acesso direto aos objetos DAO (que são as classes geradas que você conhece
), Lumine gera estas classes para que elas fiquem responsáveis pelo acesso ao banco e, consequentemente, aos objetos DAO. Para cada classe que você já conhece de Lumine, uma Model correspondente será gerada. - Pasta para models: esta pasta será criada dentro do caminho informado na opção "class-path". Veja que Lumine já preenche com o caminho padrão do CodeIgniter.
- Criar arquivo de contexto para MVC?: cria um arquivo que já possui todas as configurações necessárias para inicialização de Lumine com o CodeIgniter. Este arquivo deverá ser indicado no arquivo de carregamento automático de bibliotecas do CodeIgniter (veremos adiante no tutorial).
- Pasta para gravação do arquivo de contexto: diretório, dentro do caminho informado em "class-path", onde será gravado o arquivo de contexto. Por padrão, coloca no diretório de bibliotecas do CodeIgniter.
- Criar models?: esta opção vem preenchida para que Lumine possa gerar classes "Models", para seguir o padrão MVC (Model-View-Controller). Para que uma controller não tenha acesso direto aos objetos DAO (que são as classes geradas que você conhece
Em nosso exemplo, vamos utilizar o código SQL abaixo para gerarmos nosso banco de dados:
CREATE TABLE categoria(
codcategoria int4 not null auto_increment
, nome varchar(200)
, ordem int4
, primary key(codcategoria)
) Engine=InnoDB;
CREATE TABLE produto(
codproduto int4 not null auto_increment
, codcategoria int4 not null
, nome varchar(200) not null
, codigo_interno varchar(50) not null
, descricao text
, imagem varchar(100)
, primary key(codproduto)
, foreign key(codcategoria) references categoria(codcategoria)
on delete cascade on update cascade
) Engine=InnoDB;
Depois de criar as tabelas em seu banco de dados, preencha os demais dados (nome do banco, host, usuário e senha) e efetue o processo de engenharia reversa. Você poderá acompanhar o que está acontecendo através do Log.
Se tudo correu certo, você verá que:
- O arquivo "lumine-conf.php" foi criado em "/www/exemplos/ci";
- Foram geradas as classes ProdutoModel e CategoriaModel dentro da pasta "/www/exemplos/ci/system/application/models";
- Foram geradas as classes Produto e Categoria dentro da pasta "/www/exemplos/ci/system/application/models/dao";
- O arquivo de contexto foi gerado em "/www/exemplos/ci/system/application/libraries".
Se tudo ocorreu conforme o descrito acima, passe para etapa seguinte.
Configurando o CodeIgniter
Agora vem a parte mais fácil.
Basta informar no arquivo "/www/exemplos/ci/system/application/config/autoload.php" para carregar automaticamente a biblioteca "Lumine_ApplicationContext". Para isso, altere a linha onde está:
$autoload['libraries'] = array();
Para isto:
$autoload['libraries'] = array('Lumine_ApplicationContext');
Pronto! Sua aplicação já está pronta para utilizar Lumine e CodeIgniter!
Lembre-se: pelo padrão MVC, você deverá sempre acessar as Models e elas por sua vez acessam as classes DAO.
Para testarmos, altere o método index do arquivo welcome.php, que está no diretório "/www/exemplos/ci/system/application/controllers", com os códigos abaixo:
function index()
{
Lumine_Log::setLevel(3);
// cadastrando uma categoria
$cat['nome'] = 'Primeira Categoria';
$cat['ordem'] = 1;
// salvando e recuperando o codigo
$codcategoria = CategoriaModel::getInstance()->save( $cat );
// salvando um produto
$pro['nome'] = 'Primeiro Produto';
$pro['codigoInterno'] = 'PRO123456';
$pro['codcategoria'] = $codcategoria;
$pro['imagem'] = 'imagens/produto1.jpg';
$pro['descricao'] = 'aqui vai uma descricao bem legal';
ProdutoModel::getInstance()->save( $pro );
}
Para testar seu código, acesse o endereço via web (no meu caso, http://localhost/exemplos/ci), o resultado deverá ser semelhante ao abaixo:
Ou seja, você verá o Log gerado por Lumine, o que indica que está tudo funcionando perfeitamente.
Como de costume, as classes geradas para Models também possuem delimitadores onde você poderá colocar seus métodos, sem que eles se percam com um novo processo de engenharia reversa.
As classes Models geradas por Lumine seguem o padrão Singleton (que é semelhante ao que o CodeIgniter faz com o load->library, onde a instancia fica disponível em todas as controllers e models, porém o padrão Singleton faz mas sentido). Elas herdam Lumine_Model, classe que possui métodos pré-definidos para auxiliar em seu desenvolvimento.
Bom, espero ter esclarecido dúvidas de muitos usuários! Os arquivos deste tutorial estão disponível na páginas de exemplos.
Caso ainda tenham dúvidas, postem elas em nosso fórum!
@braços e fiquem com Deus!
Lumine 1.5.8 Exemplo de Interface de FTP com Java