Giter VIP home page Giter VIP logo

magazordapi's Introduction

MagazordAPI - CRUD MVC utilizando PHP e Docker

Instalação do projeto:

  1. Cerrificar-se de ter instalado em sua máquina os seguintes componentes:

    • Git
    • Docker
    • Docker Compose
      • Vale ressaltar que o Docker Compose já vem com o Docker Desktop, mas vale ressaltar a necessidade para o caso de você tentar rodar a aplicação usando Docker Engine.
  2. Clonar o repositório no local que você preferir

  3. Executar o arquivo init.sh

  4. Ser feliz! (E abrir a página localhost no seu browser...)

Padrões utilizados:

  • Singleton foi utilizado para instanciar a base de dados. Na classe contexto do sistema, eu utilizei não uma instância de si mesma, mas de uma conexão com o banco de dados. A classe Singleton em si nunca foi instanciada. Dessa forma, fiz com que o código utilize essa consulta para qualquer operação com o banco de dados. Apesar de não ser ativamente útil nesse projeto, pois mesmo sem ele o projeto funcionaria, decidi utilizar o Singleton por boa prática. Já que não preciso de várias conexões, me privei a somente uma.

  • Usei o Front Controller para rotear todas as conexões entre os métodos das controllers. Toda vez que uma requisição chega no arquivo index.php, ela é tratada por uma instância da classe roteadora. A classe de roteamento em si encontra a controller e o método a serem executados, que são executados de forma dinâmica. Esse padrão foi extremamente útil, pois foi exatamente ele que fez tudo se ligar no projeto.

  • Esse último é mais um adicional. Na classe Renderer.php, criei um sistema de renderização dinâmica de views. Ele possui uma função estática que é chamada pelas controllers, e, por meio de parâmetro, essa função encontra todos os arquivos front-end, relacionados a esse nome. Por exemplo, quando o método é chamado com o parâmetro index, ele encontra os arquivos index.html, index.css e index.js relacionados a tela, renderizando todos logo depois.

Refatoração Login.php:

As principais alterações foram os desacoplamentos no método doLogin. Tirando isso, as alterações notáveis foram:

  • Visto que o arquivo representa uma controller chamada Login, o nome do mesmo foi alterado para LoginController para deixar mais claro a funcionalidade do arquivo diretamente pelo nome, além de seguir o padrão MVC.
  • Nomes de variáveis e de outros objetos alterados para seguirem em inglês, pois essa é a linguagem padrão utilizada na maioria dos códigos no mundo inteiro, e seguir seu uso é ideal por vários motivos, como facilitar a inclusão de desenvolvedores de qualquer local do mundo para a empresa.
    • Essas alterações também incluem o significado do nome de cada variável, a fim de tornar mais óbvio para qualquer um que ler o código para que serve cada variável.
  • Comentários ajustados, visando melhor explicação do código.

Há diversos comentários escritos com meu nome pelo código que podem ser importantes para o entendimento das alterações.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.