Tutorial do PHP MVC Framework: exemplo do CodeIgniter

O que é estrutura PHP MVC?

PHP MVC é um padrão de design de aplicativo que separa os dados do aplicativo e a lógica de negócios (modelo) da apresentação (visualização). MVC significa Modelo, Visualização e Controlador.

O controlador faz a mediação entre os modelos e as visualizações.

Pense no padrão de design MVC como um carro e o motorista.

O carro possui pára-brisas (visão) que o motorista (controlador) usa para monitorar o tráfego à frente e depois acelerar ou frear (modelo) dependendo do que vê à frente.

Por que usar PHP MVC Framework?

  • PHP MVC Frameworks simplificam o trabalho com complex tecnologias por;
    • Escondendo todos os complex implementação details
    • Fornecendo métodos padrão que podemos usar para construir nossos aplicativos.
    • Aumento da produtividade do desenvolvedor, isso ocorre porque a implementação básica de atividades como conexão ao banco de dados, limpeza de entrada do usuário, etc., já está parcialmente implementada.
    • Adesão aos padrões de codificação profissionais

Padrão de design PHP MVC

Vamos agora discutir brevemente cada componente do padrão de design MVC.

Modelo – esta parte trata da lógica de negócios e dos dados da aplicação. Ele pode ser usado para realizar validações de dados, processar dados e armazená-los. Os dados podem vir de;

  • arquivo plano
  • banco de dados
  • documento XML
  • Outras fontes de dados válidas.

Responsável pelo Tratamento – esta é a parte que trata das solicitações dos usuários por recursos do servidor.

Por exemplo, quando os usuários solicitam o URL …/index.php?products=list, o controlador carregará o modelo de produtos para recuperar os dados dos produtos e, em seguida, exibirá os resultados na visualização de lista.

Resumindo, o controlador vincula os modelos e visualizações dependendo dos recursos solicitados.

Visualizações – esta parte trata da apresentação dos dados ao usuário. Geralmente isso ocorre na forma de páginas HTML.

Tipos de estrutura PHP MVC

Selecionar o melhor framework PHP é um desafio.

Você não precisa escrever sua própria estrutura para se beneficiar das vantagens do MVC.

Você só deve tentar criar seu próprio design de aplicativo relacionado ao MVC para entender como as estruturas MVC funcionam.

Quando estiver confortável com a forma como os frameworks MVC funcionam, você deverá passar para os frameworks maduros e já testados.

A tabela abaixo descreve brevemente alguns dos frameworks php populares e os recursos que cada framework oferece.

Quadro Descrição

CodeIgniter


CodeIgniter


https://codeigniter.com/

É uma das estruturas PHP MVC mais populares. É leve e tem uma curva de aprendizado curta. Possui um rico conjunto de bibliotecas que ajudam a construir sites e aplicativos rapidamente. Usuários com conhecimento limitado de programação OOP também podem utilizá-lo. Os aplicativos com tecnologia CodeIgniter incluem;


Cohana


Cohana


http://kohanaframework.org

É um Hierarchical Model View Controller Estrutura leve e segura HMVC. Possui um rico conjunto de componentes para desenvolver aplicativos rapidamente. As empresas que usam Kohana incluem;


CakePHP


CakePHP


www.cakephp.org

Ele é modelado após Ruby on Rails. É conhecido por conceitos como padrões de design de software, convenção sobre configuração, ActiveRecord etc. CakePHP aplicações alimentadas incluem;


Zend

www.framework.zend.com


Zend

É uma estrutura poderosa;

  • Seguro, confiável, rápido e escalável
  • Suporta Web 2.0 e criação de serviços web.

Possui APIs de fornecedores como Amazon, Google, Flickr, Yahoo etc. É ideal para desenvolver aplicativos de negócios. Os aplicativos Zend incluem;

  • PimcoreCMS,
  • DotKernel.

As empresas que usam a estrutura Zend incluem;

  • BBC
  • Cisco
  • Webex
  • Ofertas.com

Portando o aplicativo de pesquisa de opinião para CodeIgniter

Neste curso tutorial, criamos um aplicativo de enquete PHP. Aqui, iremos portar esse código para CodeIgniter

  • Baixar a versão mais recente do CodeIgniter de seu .
  • Extraia o conteúdo do arquivo compactado para o diretório de desenvolvimento no diretório do servidor web. Usaremos ciopinionpoll como nome da pasta nesta lição.
  • Navegue até o URL http://localhost/ciopinionpoll/

Portando o aplicativo de pesquisa de opinião para CodeIgniter

Agora vamos portar nosso aplicativo de pesquisa de opinião para o CodeIgniter. Lembre-se de que nosso aplicativo foi dividido em três componentes principais, a saber;

  • Front controller – é a parte que responde às solicitações de URL e retorna a página solicitada. Este código irá para o controlador
  • Modelo – este é o código que responde aos dados solicitados e retorna os dados solicitados. Este código irá para o modelo
  • Visualizações – este é o código responsável por formatar e exibir os dados. Este código irá para a visualização

    • Navegue até a pasta ciopinionpoll
    • Abra o banco de dados.php arquivo localizado no diretório application/config.
    • Localize o seguintewing linhas de código

Definições de configuração do banco de dados

Definições de configuração do banco de dados

  • Defina o nome de usuário como root
  • Defina a senha para sua senha root do host local
  • Nome do banco de dados para reviewed_poll. Observe que usaremos o banco de dados criado na lição anterior.
  • Salve as alterações e feche o arquivo.

Criando Nosso Modelo

A seguir vamos criar nosso modelo que estenderá o CI_Model. O CI_Model faz parte das bibliotecas CodeIgniter. O modelo estará localizado em application/models opinião_poll_model.php

<?php 
class Opinion_poll_model extends CI_Model 
{ 
    public function __construct() 
    { 
    	$this->load->database(); 
    } 

    public function total_votes() 
    { 
    	$query = $this->db->select('COUNT(choice) as choices_count')->get('js_libraries');
        return $query->row()->choices_count; 
    } 

    public function get_results() 
    { 
    	$libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow"); 
        $table_rows = ''; 

        for ($i = 1; $i < 5; $i++) 
        {
             $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;"; 
             $result = $model->

             select($sql_stmt); $table_rows .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>"; 
        } 
        public function add_vote($choice) 
        { 
        	$ts = date("Y-m-d H:i:s"); $data = array('choice' => $choice, 'ts' => $ts); $this->db->insert('js_libraries', $data); 
        } 
   } 
?>

AQUI,

  • “class Opinion_poll_model estende CI_Model…” é o nosso modelo que estende o CI_Model
  • “…pai:: __construct();” chama o construtor CI_Model
  • “$this->carregar->banco de dados();” carrega a biblioteca do banco de dados para que nosso aplicativo possa interagir com o banco de dados
  • “$this->db->” é o registro ativo do CodeIgniter. Verifique isso link para obter mais informações sobre o registro ativo.

Criando Nosso Controlador Vamos agora criar o controlador. Usaremos o controlador CodeIgniter padrão localizado em application/controllers/welcome.php. Substitua seus códigos-fonte pelo seguintewing código.

<?php

if (!defined('BASEPATH'))  exit('No direct script access allowed');

class Welcome extends CI_Controller {

    public function __construct() {

        parent::__construct();

        $this->load->model('opinion_poll_model');

    }

    public function index() {

        if ($this->input->post('submitbutton') && !$this->input->post('vote')) {

            echo "<script>alert('You did not vote!');</script>";

        }

        if ($this->input->post('vote')) {

            $this->opinion_poll_model->add_vote($this->input->post('vote'));

            $data['total_votes'] = $this->opinion_poll_model->total_votes();

            $data['rows'] = $this->opinion_poll_model->get_results();

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

        } else {

            $this->load->view('opinion_poll_form');

        }

    }

}

/* End of file welcome.php */

/* Location: ./application/controllers/welcome.php */
?>

AQUI,

  • “if (!definido('BASEPATH')) exit('Não é permitido acesso direto ao script');” garante que os usuários não acessem diretamente a classe do controlador
  • “class Welcome estende CI_Controller…” nosso controlador estende a classe CI_Controller
  • “public function __construct()” chama o método construtor de classe do CI_Controller e carrega nosso modelo Opinion_poll_model
  • “índice de função pública ()…” é a função que mapeia para index.php. ele usa a classe de entrada do CodeIgniter para verificar se um voto foi enviado, adicioná-lo ao banco de dados e exibir os resultados. Se o array post da classe de entrada estiver vazio, ele carrega a página de votação.
  • “$this->input->post('…')” é a classe de entrada do CodeIgniter que captura o conteúdo da variável global $_POST.
  • “$this->opinion_poll_model->add_vote($this->input->post('vote'))” chama o método add_vote do modelo para adicionar o voto ao banco de dados.

Criando nossas visualizações

Lembre-se do exemplo anterior que tínhamos duas páginas HTML, uma para votação e outra para resultados. Usaremos o mesmo código HTML com modificações mínimas para criar nossas visualizações. Crie o seguintewing arquivos no diretório application/views

opinion_poll_form.php 
<html>
<head>
    <title>
        JavaScript Libraries - Opinion Poll
    </title>
</head>

<body>
    <h2>JavaScript Libraries - Opinion Poll</h2>
    <p><b>What is your favorite JavaScript Library?</b></p>
    <form method="POST" action="index.php">
        <p>
            <input type="radio" name="vote" value="1" /> JQuery
            <br />
            <input type="radio" name="vote" value="2" /> MooTools
            <br />
            <input type="radio" name="vote" value="3" /> YUI Library
            <br />
            <input type="radio" name="vote" value="4" /> Glow </p>
        <p>
            <input type="submit" name="submitbutton" value="OK" />
        </p>
    </form>
</body>
</html>

Vamos agora criar a página de resultados results.php

<html>
    <head>
        <title>JavaScript Libraries - Opinion Poll Results</title>
    </head>
    <body>

        <h2>JavaScript Libraries - Opinion Poll Results</h2>

        <p><b>What is your favorite JavaScript Library?</b></p>

        <p><b><?php echo $total_votes; ?></b> people have thus far taken part in this poll:</p>

        <p><table><tr><td>

            <?php print($rows); ?>

        </tr></td></table></p>

        <p><a href="#">Return to voting page</a></p>
</body>
</html>

Testando nosso aplicativo

Supondo que o diretório raiz do seu aplicativo seja ciopinion, navegue até http://localhost/ciopionpoll/

Teste de estrutura PHP MVC

Clique no botão OK, você verá o seguintewing mensagem de alerta

Teste de estrutura PHP MVC

Vote no seu candidato favorito e clique em OK. Você verá o seguintewing página de resultados

Teste de estrutura PHP MVC

Conclusão

CodeIgniter é um framework PHP MVC fácil de aprender e usar que pode reduzir bastante o tempo gasto no desenvolvimento de aplicativos.
CodeIgniter é um framework PHP MVC fácil de aprender e usar que pode reduzir bastante o tempo gasto no desenvolvimento de aplicativos.

Resumo

  • Uma estrutura é um conjunto de bibliotecas que fornecem implementação parcial de tarefas comuns.
  • PHP tem uma série de estruturas MVC maduras e testadas de código aberto.
  • Uma boa abordagem de desenvolvimento separa os dados da apresentação e incentiva o uso de um ponto de entrada único em um aplicativo.
  • Aplicativos PHP tradicionais que seguem as melhores práticas de design de aplicativos podem ser portados para estruturas MVC com modificações mínimas.