ArtSchmitz /
crudapp-backend
Back-end utilizando PHP, framework Laravel e arquitetura MVC (Model-View-Controller)
Loading repository data…
MaquitoGW / repository
MVC Model é um framework simples e customizado, inspirado no Laravel, desenvolvido para testar e aprimorar minhas habilidades em PHP. Ideal para estudos e projetos de pequeno a médio porte, com suporte para roteamento, controle de dados e renderização de views.
👉 Clique aqui para ver a documentação completa e interativa
Ou acesse a página de índice para navegar por todas as documentações.
🚨 Aviso Importante: Não recomendo o uso desse MVC em projetos grandes, apenas para estudos ou em projetos de pequeno a médio porte.
Este projeto está licenciado sob a Licença MIT. Sinta-se à vontade para usar, estudar e até contribuir.
Se você tem sugestões de melhorias ou correções, fique à vontade para abrir uma issue ou enviar um pull request.
Última versão: v1.0-beta
Para obter a última versão estável, execute o seguinte comando no seu terminal:
git clone --branch v1.0-beta git@github.com:MaquitoGW/mvc_model.git
Se preferir baixar para estudos ou obter a versão mais recente, use:
git clone https://github.com/MaquitoGW/mvc_model.git
Esta documentação fornece uma explicação detalhada de como configurar rotas, controladores, grupos de rotas, manipulação de arquivos e banco de dados, e como utilizar o padrão MVC em seu projeto.
Abra o arquivo .env na raiz do seu projeto e configure as variáveis do banco de dados, URL e modo:
# URL do Site
URL="http://localhost/"
# Modo da Aplicação (Dev ou Production)
MODE=Dev
# Banco de Dados
DB=mysql
DB_HOST=localhost
DB_NAME=mvc
DB_USER=root
DB_PASS=
# Debug
DEBUG=true
Configuração do Modo:
# Modo Dev - Desenvolvimento
MODE=Dev
# - Exibe erros e exceções
# - Ativa debug (dd, dump, logView, cutErr)
# - Mostra stack trace detalhado
# Modo Production - Produção
MODE=Production
# - Oculta erros do usuário
# - Registra erros em storage/logs/php_errors.log
# - Desativa debug
Antes de rodar o projeto, instale as dependências:
composer install
Coloque todos os seus arquivos estáticos (CSS, JavaScript, imagens, fontes, etc.) na pasta public/.
A pasta public/ é onde o servidor vai procurar os arquivos acessíveis ao público, como a página inicial e arquivos de estilo.
Após configurar o .env e rodar o Composer, o projeto estará pronto para uso. Aqui estão as etapas principais:
Configuração do banco de dados: Certifique-se de que o banco de dados especificado no arquivo .env está criado e configurado corretamente.
Acessando o projeto: Para rodar o projeto, basta acessar a URL configurada no .env (por exemplo, http://localhost).
🚨 Nota: Agora, seu projeto deve estar pronto para uso, e você pode começar a desenvolver e personalizar conforme necessário!
Abra o arquivo routes/web.php para definir suas rotas.
Use a classe Routes para configurar as rotas:
use lib\Routes;
$route = new Routes();
Defina suas rotas com os métodos get e post:
Exemplos de rotas:
$route->get("home", [Site::class, "index"], true);
$route->post("form", [FormController::class, "submit"], true);
Para nomear as rotas, você pode fazer o seguinte:
$route->post("submit", [FormController::class, "submit"], true)->name("form.submit");
Finalize sua configuração de rotas com o método exit():
$route->exit();
Para agrupar rotas que compartilham o mesmo prefixo, utilize o seguinte formato:
Defina o prefixo e agrupe as rotas:
$route->prefix("admin")->group(function ($e) {
$e->get("dashboard", [AdminController::class, "dashboard"]);
$e->post("login", [AuthController::class, "login"]);
});
O prefixo define um caminho comum para todas as rotas dentro do grupo (por exemplo, "admin/dashboard").
Os controladores devem ser criados na pasta Controllers e seguir esta estrutura:
namespace Controllers;
class NomeDoControlador extends App {
public function index() {
// Código do método
}
}
ResponseA classe Response oferece métodos úteis para redirecionamento, navegação, e exibição de mensagens.
redirect($url): Redireciona para uma URL.back(): Retorna à página anterior após um redirecionamento.message($name, $value): Define uma mensagem de sessão.getMessage($name): Obtém uma mensagem da sessão.abort($code, $message = null): Exibe uma página de erro com um código HTTP.attribute($name): Obtém o valor de um parâmetro na URL.Exemplo de uso:
Response::message('success', 'Operação bem-sucedida!')->redirect('/home');
A classe File permite manipulação de arquivos e diretórios na pasta storage.
FileisDir($dir): Verifica se um diretório existe. Use get() para retornar o resultado.isFile($file): Verifica se um arquivo existe.rename($newName): Renomeia um arquivo ou diretório.delete(): Deleta um arquivo ou diretório.permissions($mode): Altera as permissões de um arquivo/diretório.save($file, $path = ''): Salva um arquivo no diretório especificado.readFile(): Lê um arquivo.Exemplos:
File::isDir("meuDiretorio", true)->get(); // Cria diretório se não existir
File::isFile("imagem.png")->delete()->get(); // Deleta arquivo
Para personalizar as páginas de erro, edite o arquivo views/err.php. Um exemplo básico para exibir uma página de erro 404:
Response::abort(404, 'Página não encontrada');
Para retornar uma view dentro do controlador, utilize o método view da classe Response:
return Response::view("nome-da-view", ['variavel' => $valor]);
As views devem estar na pasta views/.
Você pode organizar as views em subpastas e referenciá-las usando o ponto (.) para acessar:
Response::view("pasta.nome-da-view", ['variavel' => $valor]);
Exemplo de view:
<h1>Bem-vindo, <?= $variavel ?></h1>
A classe sql gerencia a conexão e manipulação de dados no banco. A conexão é configurada com as credenciais no arquivo .env.
Inserir dados:
sql::INSERT("users")->add(['name' => 'John', 'email' => 'john@example.com'])->execute();
Selecionar dados:
$user = sql::SELECT("users")->where("id", 1)->get();
Atualizar dados:
sql::UPDATE("users")->set(['name' => 'Jane'])->where("id", 1)->execute();
Deletar dados:
sql::DELETE("users")->where("id", 1)->execute();
A classe Request facilita o acesso aos dados das requisições HTTP. Use-a para acessar os dados das superglobais $_POST, $_GET, $_FILES e $_SERVER.
input($name): Retorna o valor de um campo $_POST.query($name): Retorna o valor de um parâmetro $_GET.files($name): Retorna os arquivos enviados através de $_FILES.header($name): Retorna o valor de um cabeçalho HTTP.Exemplo de uso:
$request = new Request();
// Acessando POST
$username = $request->input('username');
// Acessando GET
$searchQuery = $request->query('search');
// Acessando arquivos
$file = $request->files('upload');
// Acessando cabeçalho
$userAgent = $request->header('user-agent');
Sistema de debug similar ao Laravel com exibição visual atraente. As funções de debug funcionam apenas quando DEBUG=true está configurado no arquivo .env.
# .env
DEBUG=true # Habilita debug
DEBUG=false # Desabilita debug
dd(...$vars)Exibe variáveis com estilo e interrompe a execução.
dd($usuario, $dados); // Exibe e para tudo
dump(...$vars)Exibe variáveis com estilo sem interromper a execução.
dump($usuario, $dados); // Exibe e continua
logView($data, $label = 'INFO')Armazena informações em log no arquivo storage/logs/debug.log. Útil para registrar dados durante a execução.
logView($usuario, 'USER_INFO'); // Registra em storage/logs/debug.log
logView(['status' => 'ok'], 'PROCESS');
cutErr($callback, $logError = false)Captura erros com try-catch. Exibe o erro na tela ou registra em log conforme o parâmetro.
Parâmetros:
$callback: Função a ser executada$logError: false = exibe na tela (padrão), true = salva em storage/logs/errors.log// Exibir erro na tela
cutErr(function() {
$resultado = sql::SELECT("usuarios")->where("id", 999)->first();
echo "ID do usuário: " . $resultado['id'];
});
// Registrar erro em log
cutErr(function() {
$arquivo = fopen('arquivo_inexistente.txt', 'r');
}, true); // Erro será salvo em storage/logs/errors.log
Exemplo com autenticação:
cutErr(function() {
$usuario = sql::SELECT("usuarios")->where("email", $_POST['email'])->first();
if (!$usuario || !password_verify($_POST['senha'], $usuario['password'])) {
throw new E
Selected from shared topics, language and repository description—not editorial ratings.
ArtSchmitz /
Back-end utilizando PHP, framework Laravel e arquitetura MVC (Model-View-Controller)
JoaquimMateus0404 /
ScopeMVC é um micro-framework PHP educacional projetado para ajudar desenvolvedores iniciantes a compreenderem os fundamentos da arquitetura MVC (Model-View-Controller) de forma prática e simples, antes de migrarem para frameworks mais robustos como Laravel ou Symfony.
sfecooo /
Un progetto base in **PHP** con **architettura MVC pura** (Model-View-Controller), pensato per creare applicazioni web modulari, scalabili e pulite **senza framework esterni**.
AlbericoD /
Adaptação do framework Codeigniter, ele trabalha no padrão mvc (Model View Controller), a linguagem server side é o php, junto com BootStrap, Jquery e Angular, os resultados foram rápidos em pouco tempo de uso
gabriellglrs /
Aplicação web desenvolvida com PHP 8.2 e Yii Framework 1.1, seguindo o padrão MVC (Model-View-Controller). Criado para fins de estudo e prática, com estrutura organizada contendo Models, Views e Controllers, ideal para aprendizado e aplicação em projetos profissionais.
carlossilvajr854 /
Core de um framework MVC (Model-View-Controller) desenvolvido em PHP puro. Implementa sistema de rotas dinâmicas, abstração de controladores e carregamento automático de classes via Composer.