Qualidade e Produtividade com MVC em PHP

Como Arquiteto de Software não posso deixar de olhar para as outras solução que estão fora do mundo Java. Desenvolver um sistema em Java pode trazer diversas vantagens mas também pode trazer complexidade e custo desnecessário.

Aplicações para empresas de pequenas e médio tamanho consideram o uso de PHP com solução para seus sistemas web, dependendo das características e dos requisitos do sistema eu considero o PHP como uma ótima solução. A evolução dos frameworks MVC em PHP foi muito boa nestes últimos anos.

O que é MVC mesmo?

É um padrão de arquitetura de software largamente utilizado em soluções para Web. Sua principal vantagem é a separação das telas(view) da camada de negócio(model). Você pode usar MVC em um sistema desktop, dependendo do sistema será uma boa escolha.

Neste post vou mostrar como pode ser fácil e rápido construir uma solução usando MVC com PHP, neste caso vou usar o framework CodeIgniter.

Por que não Java?

Por que dependendo do sistema seria só adicionar mais complexidade e custo, desenvolver um sistema em Java é mais caro, isso não significa que devemos fazer todos os sistemas em PHP, mas sempre temos que balancear e a escolha da tecnologia tem que sempre que levar a complexidade do sistema em conta.

Code Igniter...

Com esse framework em PHP você verá como que é fácil e simples de desenvolver um sistema MVC de qualidade com pouca configuração. Vou mostrar um exemplo simples, mas será o suficiente para que o leitor veja as facilidades e a qualidade da solução.



Requisitos
  • PHP 5.2
  • Apache 2.2
  • Mysql 5
  • Code Igniter 1.7.1
Não entrarei nos detalhes de como instalar e configurar o PHP no Apache com suporte a Mysql. Para instalar o Code Igniter basta extrair o framework dentro da sua pasta onde você esta listando as paginas no Apache.

Vamos mexer na pasta application que fica no caminho CodeIgniter_1.7.1\system\application. Primeiro criarei o Controller. Para criar um model basta ir na pasta models e criar uma página PHP. Confira o código a baixo:

test_model.php

db->get('pessoa', 10); 
return $query->result(); 
} 

} 

?> 

Existem algumas formas de nomear uma classe model, a classe model é responsável pela regras de negócio e acesso ao banco de dados. Repare que o nome da classe é igual o nome do arquivo(test_model.php) só que com a primeira letra em maiúscula.

Os atributos com "var $" são referentes aos atributos que existem no banco de dados, neste exemplo existe o método get_last_ten que retorna os últimos registros da tabela pessoa do banco de dados.

Criei um banco de dados no mysql com 1 tabelinha. Segue o script do banco:

-- phpMyAdmin SQL Dump
-- version 3.2.0
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jul 04, 2009 at 07:54 PM
-- Server version: 5.0.67
-- PHP Version: 5.2.10

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Database: `test`
--

-- --------------------------------------------------------

--
-- Table structure for table `pessoa`
--

CREATE TABLE IF NOT EXISTS `pessoa` (
`id` int(11) NOT NULL auto_increment,
`nome` varchar(30) NOT NULL,
`endereco` varchar(150) NOT NULL,
PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Dumping data for table `pessoa`
--

INSERT INTO `pessoa` (`id`, `nome`, `endereco`) VALUES
(2, 'Diego', 'GTI Centro'),
(3, 'Bruna', 'Centro Viamao');

Agora que temos o model e o banco vamos ao Controller que controla tudo, para isso basta criar outra página PHP no diretório CodeIgniter_1.7.1\system\application na parte de controllers.
Confira o código do controller a baixo:

test.php

 'CodeIgnitorAppTest', 
'developer' => 'Diego Pacheco' 
); 

$this->load->view('test',$data); 
} 

function listar(){ 

$data = array( 
'nomeApp' => 'CodeIgnitorAppTest', 
'developer' => 'Diego Pacheco' 
); 

$this->load->model('Test_model','myModel'); 
$data['query'] = $this->myModel->get_last_ten(); 
$this->load->view('test', $data); 
} 
} 

?> 

Algumas explicações, o método index é executado por padrão, cada método desta classe poderá ser acessível quando você acessa pelo browser

http://localhost/CodeIgniter_1.7.1/index.php/nomeDoController/nomeDoMetodo/parametros

Logo digitando http://localhost/CodeIgniter_1.7.1/index.php/test você entra na aplicação acessando o método padrão chamado index. No método index estou criando uma variável chama de data que é um array e dentro desse array estou passando dois parâmetros. Também estou mandando carregar a view chamada de test.

Vamos ao código da View... Confira o código a baixo:

test.php



Primeira View com CodeIgniter



View gerada pelo CodeIgniter!

Desenvolvida por:

Lista de Pessoas

  • id;?> | nome;?>
  • Listar Pessoas"; } ?>
Página renderizada em {elapsed_time} segundos


A página deve estar dentro de CodeIgniter_1.7.1\system\application views. Como pode ver é uma página html com blocos de código PHP, e usuário clicar em listar o framework ira chamar o controller no método listar que ira chamar o model pegando os registros da tabela pessoa e voltando ao controler que repassa isso a view pela variável $query.

Para que toda essa aplicação funcione você deve configurar o acesso ao banco de dados e carregar as bibliotecas para isso entre na pasta config e edite o arquivo autoload.php e procure pela linha $autoload['libraries'] = array(); e substitua e mesma por: $autoload['libraries'] = array('database'); Assim estamos carregando o módulo de banco de dados.

Agora só falta configurar o acesso ao banco, abra o arquivo database.php também na pasta config, neste caso como é um exemplo estou com a instalação default sem senha do root, mas isso não é aconselhável para sua aplicação.

$active_group = "default";
$active_record = TRUE;

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "test";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";

E pronto agora temos uma mini aplicação MVC com o Code Igniter o bom é que isso pode ser feito em menos de 5 mim e com uma excelente qualidade; Estou desenvolvendo uma aplicação com esse framework e mais para frente mostro outras facilidades.

Abraços.

Popular posts from this blog

Telemetry and Microservices part2

Installing and Running ntop 2 on Amazon Linux OS

Fun with Apache Kafka