Arquitetura do Sistema
Esta página documenta a arquitetura técnica do VF Web, incluindo padrões de projeto, estrutura de camadas e tecnologias utilizadas.
Visão Geral da Arquitetura
O VF Web segue uma arquitetura monolítica baseada em PHP, utilizando o padrão MVC simplificado. O sistema é estruturado da seguinte forma:
┌─────────────────────────────────────────────────────────┐
│ FRONT-END │
│ HTML + CSS + JavaScript (Bootstrap 4, jQuery) │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ CAMADA DE VISÃO │
│ Arquivos .html (templates) + Arquivos .php (renders) │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ CAMADA DE CONTROLE │
│ Arquivos *_grava.php (lógica de negócio) │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ CAMADA DE DADOS │
│ Classes em Class/ + Banco MySQL/MariaDB │
└─────────────────────────────────────────────────────────┘
Padrões Utilizados
1. Estrutura de Arquivos
O sistema segue uma estrutura organizada:
- HTML Templates: Arquivos
.htmlem pastas_HTML/contendo a estrutura visual - PHP de Renderização: Arquivos
.phpque carregam os templates HTML - PHP de Gravação: Arquivos
*_grava.phpque contém a lógica de negócio
Exemplo baseado em _Cadastros/pessoas_edita.php:
- Template:
_Cadastros/_HTML/pessoas_edita.html - Renderização:
_Cadastros/pessoas_edita.php - Lógica:
_Cadastros/pessoas_grava.php
2. Classes de Negócio
Todas as classes estão localizadas em Class/:
| Classe | Arquivo de origem | Função |
|---|---|---|
| DB | Class/DB.class.php | Abstração de banco de dados usando PDO |
| Util | Class/util.class.php | Funções utilitárias (formatação, sanitização) |
| Html | Class/html.class.php | Helper para geração de elementos HTML |
3. Conexão com Banco de Dados
A conexão é feita através da classe DB.class.php (Class/DB.class.php:30-51):
$dsn = "mysql:host={$host};port={$porta};dbname={$nomedb};charset=utf8mb4";
$this->conexao = new PDO($dsn, $usudb, $senhadb, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
]);
4. Sistema de Sessão
O sistema utiliza sessões PHP para autenticação (index.php:3):
session_start();
Variáveis de sessão importantes:
$_SESSION['logado']- Indica se o usuário está autenticado$_SESSION['idusuario']- ID do usuário logado$_SESSION['mensagem']- Mensagens para o usuário
5. Autenticação e Autorização
O fluxo de autenticação:
- Usuário acessa
index.php - Se já logado, redireciona para
_Inicio/inicio.php - Caso contrário, exibe
login.html - Formulário envia dados para
_BD/conecta_login.php
Estrutura de Tabelas do Banco
As tabelas são criadas automaticamente a partir de _BD/tabelas_sistema.sql (referência em Class/DB.class.php:333).
Tabelas principais:
pessoas- Cadastro de pessoas (clientes, fornecedores, funcionários)contapag- Contas a Pagarcontarec- Contas a Receberprodutos- Cadastro de produtospedidos- Pedidos de vendasorcamentos- Orçamentos
Configurações do Sistema
As configurações são armazenadas em:
privado/constantes/constantes.vf- Constantes do sistemaprivado/_Constante/- Diretório de configurações
API e Integrações
API REST
O sistema possui uma classe Api em Class/api.class.php que permite:
- Geração de chaves de API para clientes (
api.class.php:16-61) - Integração com sistemas externos
Webhooks
Diretório webhook/ contém arquivos para integração via webhooks.
Seguranção
Proteção de Rotas
O sistema verifica autenticação em todas as páginas internas:
// De _Inicio/inicio.php
if(!$_SESSION['logado']){
header('Location: ../index.php');
exit;
}
Constantes de Segurança
O sistema verifica a existência do arquivo de constantes antes de executar:
// index.php:14-17
if(!realpath("privado/constantes/constantes.vf")){
header("Location: privado/_Constante/criaConstante_login.html");
exit;
}
Sanitização de Entrada
A classe Util (Class/util.class.php) oferece métodos para sanitização:
sgr()- Sanitização para strings (gravar)igr()- Sanitização para inteirosvgr()- Sanitização para valores monetáriosdgr()- Sanitização para datas
Referências
- Arquivo principal de entrada:
index.php - Menu do sistema:
menu.html - Login:
login.html - Classes:
Class/DB.class.php,Class/util.class.php - Constantes:
constantes.vf(gerado automaticamente)