Skip to content

Latest commit

 

History

History
127 lines (96 loc) · 3.44 KB

README.md

File metadata and controls

127 lines (96 loc) · 3.44 KB

Skeleton for Slim

Estrutura básica para uso do microframework Slim usando padrão MVC.

Este repositório consiste em uma estrutura básica para o uso no desenvolvimento de aplicações usando o microframework Slim.

A estrutura dos diretórios estão separados da seguinte forma:

    - public
        - css
        - fonts
        - images
        - js
    - src
        - app
            - Controllers
            - Helpers
            - Middlewares
            - Models
            - Routes
            - Views
        - configs
        - system
            - Interfaces

No diretório public são encontrados os arquivos de folha de estilo, fonts, imagens e javascrip.

No diretorio src é onde estão os arquivos PHP.

  • app está a estrutura MVC e outros arquivos como Helpers, Middlewares e Routes.
  • configs aqui estão os arquivos de configurações do microframework Slim e configurações que possam ser usadas pelos sistemas desenvolvidos em cima dessa estrutura.
  • system arquivos que organizam a estrutura para o uso do MVC.

O padrão MVC

O padrão MVC [Model, View, Controller] consiste organizar os arquivos da aplicação em três funções.

  • Model é onde se encontra a lógica da aplicação. Aqui é onde é feita a filtragem dos dados, busca dos dados no Banco, organização dos dados, em fim o CRUD.
  • View é onde estão os modelos/organização dos dados que serão mostrados para o usuário final.
  • Controller nesses arquivos é onde é recebido as requisições (request) dos usuários e o mesmo pega os dados do Model e coloca em uma View e responde (response) para o requisitante.
Padrão dos arquivos do MVC
Model

Os arquivos do model devem seguir a seguinte estrutura:

src/app/Models/Usuarios.php

<?php

namespace App\Models;

use System\Model;
use Psr\Http\Message\RequestInterface;

class Usuarios extends Model
{
    public function __construct($container)
    {
        // Nome da tabela do banco de dados que será usado nesse model
        $table = 'usuarios';
        parent::__construct($container,$table);
    }
    
    public function index(RequestInterface $request)
    {
        // Definimos os dados que serão enviados para a página index
        $this->title = "Título da página";
        $this->content = "Conteúdo da página";
        
        // Retornamos os dados para que o Controller
        // possa repassa-los para a View
        return $this->data;
    }
}
View

As Views dessa estrutura usam o Twig.

src/app/Views/index.twig

<!doctype html>
<html lang="pt-br">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>{{ title }}</title>
    </head>
    <body>
      <h1>{{ title }}</h1>
      <hr>
      <p>{{ content }}</p>
    </body>
</html>
Controller

Os arquivos de Controller devem seguir a seguinte estrutura:

src/app/Controllers/Home.php

<?php

namespace App\Controller;

use System\Controllers;

final class Home extends Controller
{
    public function __construct($container)
    {
        parent::__construct($container, 'Home', 'home');
        
        $this->template['index'] = 'index.twig';
    }
}

O metodo index ja está implementado pela classe pai.