Boa noite, após essa época de molemolencia de final de ano, to tentando voltar ao blog e a série de posts sobre o Lumine, agora, falando sobre o arquivo de configuração.

Como todos, se não, a maioria dos frameworks, o Lumine tem a necessidade de um arquivo de configuração, e ai está mais um grande diferencial do Lumine com relação aos outros frameworks do mesmo segmento: Simples, rápida, e única configuração.

A configuração de Lumine é feita através de uma matriz associativa, contendo os valores necessários para que a comunicação com o banco de dados seja feita.

Na raiz do projeto, crie um arquivo clicando com o botão direito sobre o projeto -> New -> PHP File -> informe “lumine-config.php” como nome do arquivo.

Abaixo um exemplo de como deve ser o arquivo de configuração:

$lumineConfig = array(
    'dialect' => 'MySQL',
    'database' => 'exemplo_lumine',
    'user' => 'root',
    'password' => '',
    'port' => '3306',
    'host' => 'localhost',
    'class_path' => '/var/www/public_html',
    'package' => 'entidades',

    'options' => array(
        'schema_name' => '',
        'generate_files' => '1',
        'generate_zip' => '',
        'class_sufix' => '',
        'remove_count_chars_start' => '',
        'remove_count_chars_end' => '',
        'remove_prefix' => '',
        'create_entities_for_many_to_many' => '',
        'plural' => 's',
        'many_to_many_style' => '',
        'create_controls' => '',
        'xml_validation_path' => '',
        'php_validator_path' => ''
    )
);

Na documentação oficial do Lumine é descrito perfeitamente cada uma dessas opções no arquivo de configuração, mas vou tentar reforçar aqui:

  • dialect: dialeto (tipo de banco de dados) a ser usado. Atualmente suportados: MySQL e PostgreSQL ( Aqui um ponto fraco do Lumine, embora na maioria das aplicações PHP o MySQL está presente, ficaremos na mão se for preciso usar outro banco de dados, como por exemplo SQL Server ou Oracle, mas acredito que em breve teremos suporte para outros BD’s );
  • database: nome do banco de dados a ser usado;
  • user: nome do usuário para conectar no banco de dados;
  • password: senha para conexão com o banco de dados;
  • port: porta de conexão com o banco;
  • host: host de conexão com o banco;
  • class_path: pasta raiz onde estão gravados os arquivos do Lumine. Por exemplo, se suas classes estão dentro de um pacote (package) entidades, e estão dentro do diretório /www/meusite, então sua class-path é /www/meusite;
  • package: nome do pacote onde estão gravados os arquivos (estilo Java). Por exemplo, se você deseja criar o pacote entidades, e sua class_path (pasta raiz) é /www/meusite, então seus arquivos de mapeamento do banco devem estar dentro da pasta /www/meusite/entidades;

    Só para reforçar: Supondo que você tenha definido sua class_path como /www/meusite, e colocou no atributo package como com.domain.classes, suas classes deverão estar dentro da pasta /www/meusite/com/domain/classes.

  • options: nesta parte da configuração, serão usadas configurações opcionais, que podem ou não ser usados:
    • schema_name: quando trabalhando com o PostgreSQL, você poderá especificar o schema utilizado por suas tabelas. Quando trabalhando com o MySQL, você poderá
      colocar opcionalmente o nome do banco de dados, assim sempre será realizada a consulta no sentido nome_do_banco.nome_da_tabela (pois não há suporte a schema);
    • generate_files: opção da engenharia reversa para gerar os arquivos diretamente na pasta de destino;
    • generate_zip: opção da engenharia reversa para gerar um arquivo ZIP dentro da pasta indicada em class_path contendo os arquivos gerados pelo processo de engenharia reversa;
    • class_sufix: opção para utilizar um sufixo nos arquivos gerados pela engenharia reversa. Por exemplo, para que os seus arquivos sejem gerados no formato Minhaclass.class.php, coloque nesta opção o valor class. O padrão é nulo, sendo gerado no formato Minhaclass.php;
    • remove_count_chars_start: opção para remover um número determinado de caracteres no início do nome da tabela para gerar a classe. Por exemplo, se sua tabela tem o nome de tbl_produtos, e você deseja remover tbl_, utilize o valor 4, assim sua classe será criada como Produtos.php. Lembre-se que ele removerá os 4 primeiros caracteres de todas as tabelas encontradas;
    • remove_count_chars_end: funciona de forma semelhante ao anterior, porém remove os n caracteres no final do nome da tabela;
    • remove_prefix: se ao invés de um número determinado de caracteres você deseja remover um prefixo específico, você poderá defini-lo neste item. Por exemplo, se você deseja remover o prefixo de todas as tabelas que contém no inínio de seu nome o valor table_, indique table_ neste item, assim tabelas nomeadas como table_produtos, table_pessoas, terão suas classes geradas como Produtos.php, Pessoas.php.
    • create_entities_for_many_to_many: por padrão, Lumine não gera entidades para tabelas de relacionamento muitos-para-muitos. Caso deseje gerar estas entidades, especifique 1 para esta opção;
    • plural: expressão utilizada para colocar em formato de plural os campos de relacionamento muitos-para-muitos ou um-para-muitos.
    • create_controls: cria formulários básicos de controle para edição dos dados contidos no banco.
    • xml_validation_path: Caminho alternativo para gravar seus arquivos de validação das classes, descritos em XML.
    • php_validator_path: Caminho onde você terá suas classes em PHP para validações personalizadas.
    • use_formatter_as_default: Permite que você utilize os formatadores de campo e retorne seus resultados como padrão quando acessar um campo. Por exemplo, se você fizer echo $obj->nome, Lumine irá checar se há formatadores para este campo, executá-los e retornar seu valor.

Este é o arquivo de configuração do Lumine, super simples e fácil de entender. Caso tenham alguma dúvida sobre qualquer uma das opções deixe comentários..

Abraços, até o próximo post.

Compartilhe esse post:
  • Print
  • email
  • Technorati
  • LinkedIn
  • Digg
  • del.icio.us
  • Facebook
  • Live
  • MySpace
  • Add to favorites
  • FriendFeed
  • PDF
  • Ping.fm
  • RSS
  • Tumblr
  • Twitter