Ir para conteúdo
Fórum Script Brasil
  • 0

Um MVC sem Composer e sem .htaccess


Frank K Hosaka

Pergunta

Hoje decidi trabalhar no arquivo Router.php que o Barder passou para mim. Com ajuda do echo e var_dump, eu consegui fazer a seguinte gambiarra:

index.php

<?php
require_once 'Router.php';
require_once 'HomeController.php'; // o router precisa de todas as classes
$router = new Router();
$router->addRoute('/', 'HomeController', 'index');
$uri=$_SERVER['REQUEST_URI'];   // $uri='/a_study/'
$tamanho=strlen($uri);
$uri=substr($uri,8,$tamanho);  // $uri="/"
$route = $router->getRoute($uri);
if ($route) {
    $controller = $route['controller'];
    $method = $route['method'];
    (new $controller)->$method();}

==========================================================================
Router.php 

<?php
class Router{
    private $routes = [];
    public function addRoute($url, $controller, $method){
        $this->routes[$url] = [
            'controller' => $controller,
            'method' => $method,];}
    public function getRoute($url){
        if (array_key_exists($url, $this->routes)) {
            return $this->routes[$url];} else {
            return null;}}
}
=============================================================================

Homepage.php

<div style='width:500px;margin:0 auto;margin-top:100px'>
<form method=post action=HomeController.php>
    Nome <input name=nome>
    <input type=submit>
</form>
<h1><?=$mensagem?>
</div>

============================================================================
HomeController.php

<?php
class HomeController{
    public function index($mensagem = null){
        require_once 'homepage.php';}
}
if($_POST){
    $mensagem="Seu nome é ".$_POST['nome'];
    (new HomeController)->index($mensagem);}

Depois de duas semanas apanhando com tentativa e erro, finalmente consegui montar o meu primeiro MVC com um router que funciona (claro que se trata de uma enorme gambiarra, mas eu não tenho mais o problema da nova tela se agregar à tela anterior. Hoje também perguntei ao Barder se ele não tinha um código básico de MVC com router, e não é o que danadinho tem! O código dele é super bacana, mas não contempla uma rotina para processar resposta do usuário. Mas eu estou contente, agora vou dormir mais tranquilo!

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...