Atenção: esse artigo tem um vídeo complementar. Clique e assista!

De que trata o artigo:

Utilização de frameworks de mapeamento objeto-relacional e abstração de SQL, assim com o uso de bibliotecas para geração de templates. Neste artigo é abordado um estudo de caso para demonstrar a utilização dessas tecnologias.


Para que serve:

Fornecer um meio prático para a realização de mapeamento objeto-relacional, abstração da linguagem SQL através de métodos de persistência, consulta, manipulação de dados, além de geração de templates.


Em que situação o tema é útil:

No desenvolvimento de aplicações Web orientadas a objetos com bancos de dados relacionais, utilizando a linguagem de programação PHP.
Autores: Emílio Nicolau Rossini de Oliveira, Lucas Sobrinho Teixeira e Marco Antônio Araújo

Hoje em dia é muito comum uma aplicação Web orientada a objetos utilizar mecanismos de persistência em um banco de dados relacional. Para que isso aconteça é preciso realizar o mapeamento objeto-relacional (ou ORM) o qual faz com que as tabelas do banco de dados sejam reproduzidas através de classes, e uma instância de determinada classe é representada em um registro da tabela correspondente. O uso de frameworks é uma das soluções mais comuns e práticas para a realização de mapeamento objeto-relacional.

O framework Lumine é capaz de realizar o mapeamento objeto-relacional para a linguagem de programação PHP (Hypertext Preprocessor) orientada a objetos com um banco de dados relacional. Além disso, possui métodos de persistência, consulta e manipulação de dados, abstraindo assim a linguagem SQL (Structured Query Language).

A biblioteca Smarty Template Engine destaca-se por gerar templates, com intuito de separar as páginas PHP, com as lógicas de negócio, das páginas de apresentação do conteúdo permitindo assim que o profissional responsável pela programação front-end e o responsável pela codificação trabalhem juntos.

Neste artigo, será apresentado um estudo de caso exemplificando os frameworks citados anteriormente, focando nas suas principais funcionalidades e o benefício de utilizar em conjunto essas tecnologias.

Estudo de caso

Para o estudo de caso deste artigo, adotamos como modelo o Diagrama de Tabelas Relacionais (DTR) apresentado na Figura 1 e o Diagrama de Classes correspondente da Figura 2.

Esse estudo de caso aborda que um Funcionário está alocado em uma Empresa, e que esse Funcionário pode participar de vários Projetos, e os Projetos podem ter a participação de vários Funcionários.

Figura 1. Diagrama de Tabelas Relacionais

Figura 2. Diagrama de Classes

Framework Lumine

Para exemplificar a utilização do Lumine, esse artigo apresenta a configuração do framework, como realizar o mapeamento objeto-relacional e como são realizadas as principais operações de SQL utilizando o framework, embasado no Diagrama de Tabelas Relacionais e no Diagrama de Classes do estudo de caso. O Lumine tem compatibilidade com os SGBDs Firebird, MySQL e PostgreSQL.

Configuração

A maioria dos frameworks existentes possuem um arquivo de configuração, e com o Lumine não é diferente, nesse arquivo se define a conexão com o banco de dados e outras informações primordiais para seu funcionamento que serão descritas a seguir.

A Listagem 1 demonstra o arquivo de configuração lumine-conf.php, relatando como é a configuração da conexão com o banco de dados, que é representada através de uma matriz associativa.

Listagem 1. Matriz associativa do arquivo de configuração do Lumine

$lumineConfig = array(
           'dialect' => 'MySQL',
           'database' => 'db_empresa', 
           'user' => 'root',
           'password' => '',
           'port' => '3306',
           'host' => 'localhost', 
           'class_path' => '/var/www/public_html',  
           'package' => 'model',
           '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' => '',
                   'many_to_many_style' => '%s_%s',
                   'create_controls' => '',
                   'camel_case' => '0',
                   'generateAccessors' => '1',
                   'keep_foreign_column_name' => '0'              
       )
 );
 ?>

A seguir, a Tabela 1 apresenta a definição dos itens da matriz de configuração.

Tabela 1. Matriz associativa do arquivo de configuração do Lumine

...

Quer ler esse conteúdo completo? Tenha acesso completo