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'
)
);
?>
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
... |
Confira outros conteúdos:
Perguntas frequentes
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.