Artigo SQL Magazine 69 - Construindo uma Aplicação Web com Lumine e Smarty

Desenvolvimento com PHP orientado a objetos, em banco de dados relacional e com uso de templates.

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' ) ); ?> " [...] continue lendo...

Artigos relacionados