MVC na linguagem PHP

No último artigo publicado, foi falado acerca do Modelo MVC e sobre aquilo em que este consiste. O Modelo Model-View-Controller é amplamente utilizado nos dias de hoje.

A pedido de um leitor, decidimos escrever um artigo em que exemplificamos este maravilhoso (ou não) modelo MVC utilizando a linguagem de programação PHP.

Gostaria de dizer que esta exemplificação terá como base uma “framework base” MVC construída por mim através de vários tutoriais e ideias que encontrei online.

Para a aplicação começar a ser construída, é necessário efetuar a estruturação da mesma. Esta estruturação passa pela disposição dos ficheiros pelas pastas. Irá ser utilizada a seguinte estrutura:

| app_core (Application Core)
     | controllers
     | libs
     | models
     | views
     | config.php

| public_html (Public HTML)
     | css
     | imgs
     | js
     | .htaccess
     | index.php

Visualizando a estruturação anterior, é possível verificar que existem duas pastas principais: a pasta app_core e a pasta public_html. Cada uma das duas pastas tem a sua função específica. Vejamos então qual a finalidade de cada uma das pastas.

Application Core

O núcleo (ou motor) da aplicação está contido na pasta app_core estando no mesmo nível que a pasta que irá estar pública através do browser, logo os visitantes não terão acesso a nenhum conteúdo desta pasta. Dentro desta pasta podemos verificar a existência de quatro outras e também de um ficheiro.

  • controllers → pasta para colocar os controladores da aplicação que são, de forma generalizada, aqueles ficheiros que comandam a aplicação: o seu cérebro;

  • libs → nesta pasta estão contidas as classes base para todos os outros ficheiros da aplicação como os modelos, controladores, vistas, base de dados, etc.

  • models → aqui são colocados os modelos da aplicação, ou seja, aqueles ficheiros que estão encarregados da manipulação de dados;

  • views → esta pasta irá conter todos os ficheiros que têm como base HTML. Mais nenhuma pasta da aplicação deverá conter ficheiros com HTML;

  • config.php → o ficheiro de configuração principal. Aqui são definidas as diversas constantes que irão ser necessárias na execução da aplicação.

Public HTML

A pasta public_html será aquela que para a qual o servidor web, como por exemplo o apache, estará a apontar. Esta irá conter todos os ficheiros que estarão disponíveis ao utilizador.

  • css → todos os ficheiros de estilo serão incluídos nesta pasta;
  • imgs → qualquer imagem que seja utilizada na aplicação poderá ser colocada aqui;
  • js → todos os scripts escritos na linguagem javascript deverão aqui ser colocados;
  • .htaccess → o ficheiro que dispensa apresentações;
  • index.php → o ficheiro onde tudo começa.

config.php

Iremos começar pelo ficheiro mais simples: o ficheiro config.php que está contido base do núcleo da aplicação (app_core/config.php). Este ficheiro, como já referido, irá conter as constantes principais. Ora veja:

<?php

/*
* Ficheiro de Configuração
*
* Este ficheiro contém a configuração base deste website/aplicação:
*  1. Constantes Base
*  2. Constantes de Diretórios
*  3. Configuração da Base de Dados
*  4. Definições de erros
*
* Coloque sempre uma barra (/) depois de todos os caminhos.
*/

//1. Constantes Base
define('ROOT', dirname(__FILE__) . '/');
define('URL', 'http://localhost/mvc/');

//2. Constantes de Diretórios
define('DIR_LIBS', ROOT  . 'libs/');
define('DIR_MODELS', ROOT  . 'models/');
define('DIR_VIEWS', ROOT  . 'views/');
define('DIR_CONTROLLERS', ROOT . 'controllers/');
define('DIR_PUBLIC', '../public_html/');

//3. Configuração da Base de Dados
define('DB_TYPE', 'mysql');
define('DB_HOST', 'localhost');
define('DB_NAME', 'dbname');
define('DB_USER', 'dbuser');
define('DB_PASS', 'dbpass');

/*
* 4. Definições de Erros
*
* Defina error_reporting:
*  para -1 de forma a mostrar todos os erros que ocorrem;
*  para  0 de forma a ocultar todos os erros gerados.
*/
error_reporting(-1);
ini_set( 'display_errors','-1');

Crie um ficheiro com o código acima e guarde-o na pasta mencionada. Não se esqueça de alterar a constante URL, de forma a corresponder com o URL que vai utilizar para criar esta pequena aplicação. Altere também os dados da Configuração da Base de Dados.

Dica:

Como pode ter reparado acima, eu estou a utilizar o link localhost/mvc  que redirecionará para a pasta pública da aplicação, sendo que a base dos documentos do meu servidor é C:\Web\Server\Apache24\htdocs  e a aplicação está localizada em D:\Development\mvc.

Como fiz isto? Criei um link simbólico de forma a que C:\Web\Server\Apache24\htdocs corresponda a D:\Development\mvc. Para criar um link simbólico no Windows basta correr o seguinte comando na linha de comandos em modo de administrador:

MKLINK /D <novo-link> <local-dos-ficheiros>

Onde <novo-link> corresponde ao local a que irá corresponder o <local-dos-ficheiros>. No meu caso, tive que executar o seguinte comando:

MKLINK /D C:\WebServer\Apache24\htdocs\mvc D:\Development\mvc\public_html

Isto pode ser, obviamente, feito também em linux e OS X porém não sei como, mas caso tenha uma distribuição Linux ou OS X, recomendo a leitura desta página.

Saindo da dica…

Como pode ver pela estrutura da aplicação, ainda há muito a fazer. Em breve lançarei a segunda parte desta mini-série de artigos. Esperemos que tenham gostado deste e que gostem dos próximos artigos.