-
Servidor Embutido Local:
http://localhost:8000 -
Rotas das Operações:
-
/: Página Inicial com Menu de Seleção -
/home/soma: Calculadora de Adição ($A + B$ ) -
/home/subtracao: Calculadora de Subtração ($A - B$ ) -
/home/multiplicacao: Calculadora de Multiplicação ($A \times B$ ) -
/home/divisao: Calculadora de Divisão ($A \div B$ ) com proteção contra divisão por zero
-
A Calculadora Web MVC é uma aplicação desenvolvida em PHP puro, estruturada sobre um núcleo próprio de arquitetura Model-View-Controller (MVC) e gerenciamento de dependências via Composer.
Criado para demonstrar os fundamentos de engenharia de software na web com PHP sem o uso de frameworks pré-fabricados (como Laravel ou Symfony), o projeto implementa um motor completo de Front Controller e URL Rewriting, isolando completamente a lógica de controle de requisições (app/core/Core.php), o modelo de apresentação com layout mestre (template.php) e os cálculos aritméticos.
- ➕ Adição (
/home/soma): Formulário interativo para soma de dois operandos com persistência visual dos valores e exibição destacada do total. - ➖ Subtração (
/home/subtracao): Operação de diferença entre valores com suporte a números decimais e negativos. - ✖️ Multiplicação (
/home/multiplicacao): Produto aritmético com validação de entrada de dados numéricos. - ➗ Divisão Segura (
/home/divisao): Cálculo de quociente com checagem defensiva: impede a divisão por zero e apresenta alerta visual explicativo ao usuário. - 🖼️ Layout Mestre Unificado (
template.php): Estrutura padronizada contendo cabeçalho institucional, logotipo, barra de navegação entre as operações e rodapé compartilhado.
- Front Controller e Roteamento Desacoplado: A classe
Core.phpcaptura o parâmetrourlreescrito pelo servidor web, identifica o controlador (Controller), o método (Action) e os argumentos passados na query string, instanciando-os dinamicamente. - Sistema de Renderização em Duas Camadas:
loadView(): Extrai os dados associativos do modelo em variáveis e carrega a visão específica da operação.loadTemplate(): Envelopa a view filha dentro do layout visual mestre (template.php).
- Compatibilidade Multi-Servidor (Apache & Nginx): O repositório inclui tanto as diretivas de reescrita
.htaccesspara servidores Apache quanto um template prontonginx.template.confcom suporte a FastCGI PHP-FPM. - Design Responsivo em CSS Puro: Folha de estilos dedicada (
assets/css/style.css) com tipografia moderna, cartões com sombras suaves (box-shadow) e botões com transições animadas no hover.
Calculadora_php/
├── app/
│ ├── controllers/
│ │ └── HomeController.php # Métodos que processam os formulários de cada operação
│ ├── core/
│ │ ├── Controller.php # Classe base com helpers de carregamento de views
│ │ ├── Core.php # Motor de roteamento e Front Controller
│ │ └── Model.php # Classe base de conexão e dados
│ ├── models/
│ │ └── Operacao.php # Model de regras aritméticas
│ └── views/ # Telas renderizadas
│ ├── home.php # Apresentação do menu
│ ├── soma.php # Interface de adição
│ ├── subtracao.php # Interface de subtração
│ ├── multiplicacao.php # Interface de multiplicação
│ ├── divisao.php # Interface de divisão com proteção contra zero
│ └── template.php # Layout base (Header, Nav, Content, Footer)
├── assets/
│ ├── css/style.css # Estilização visual da aplicação
│ └── img/ # Imagens e logotipo
├── config/
│ └── config.php # Configurações de URL base e constantes
├── composer.json # Configuração do autoload PSR-4
├── index.php # Ponto de entrada único da aplicação
├── nginx.template.conf # Configuração de deploy para servidor Nginx
└── .htaccess # Regras de URL amigável para Apache
[ Requisição do Navegador: /home/divisao ]
│
▼
[ index.php ]
│
▼
[ app/core/Core.php ]
(Roteador Front Controller)
│
▼
[ HomeController -> divisao() ]
│
┌────────────┴────────────┐
▼ ▼
[ Operacao Model ] [ app/views/divisao.php ]
(Validação de Zero) (Injetado em template.php)
│ │
└────────────┬────────────┘
▼
[ Resposta HTML Renderizada ]
- PHP: Versão 8.0 ou superior.
- Composer: Para geração do autoloader de classes.
- Servidor Web: Apache (com
mod_rewrite), Nginx ou o servidor CLI embutido do próprio PHP.
git clone https://github.com/erickystn/Calculadora_php.git
cd Calculadora_phpcomposer dump-autoloadA forma mais rápida de testar a aplicação localmente sem configurar servidores externos é utilizando o servidor embutido do PHP:
# Executar a partir da raiz do projeto:
php -S localhost:8000Abra o navegador no endereço: http://localhost:8000.
Trecho do método de divisão no HomeController.php:
public function divisao() {
$dados = array();
if (!empty($_POST['n1']) && isset($_POST['n2'])) {
$n1 = floatval($_POST['n1']);
$n2 = floatval($_POST['n2']);
if ($n2 == 0) {
$dados['erro'] = "Não é possível dividir por zero!";
} else {
$dados['resultado'] = $n1 / $n2;
}
$dados['n1'] = $n1;
$dados['n2'] = $n2;
}
$this->loadTemplate('divisao', $dados);
}| Tecnologia | Finalidade |
|---|---|
| PHP 8.x | Linguagem de programação backend e renderização server-side |
| Composer | Gerenciamento do autoloader PSR-4 e mapeamento de namespaces |
| CSS3 | Estilização responsiva com Flexbox, sombras e paleta moderna |
| Apache / Nginx | Suporte configurado para servidores web com reescrita de rotas |
Desenvolvido por Ericky Sant'ana para estudo de arquiteturas web em PHP.
Distribuído sob a licença MIT.