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!
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
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo