8000 GitHub - levicosta201/testeKabum
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

levicosta201/testeKabum

Repository files navigation

Iniciando

Este projeto foi desenvolvido como base para os testes técnicos, e foi feito de maneira que pudesse ter um desenvolvimento rápido e simples, porém, ao mesmo tempo robusto. Utiliza o padrão MVC, dentro da pasta App, onde poderemos encontrar as pastas Cache, Controller, Core, Model e View. Em cache temos um cache das páginas para que possam ser geradas mais rapidamente.

Usuário padrão sistema

email: kabum@kabum.com.br pass: kabum2021

Instalação Via Docker

Para instalar é necessário que tenha o Docker e o Docker Compose instalado na maquina. Para evitar problemas de permissão com o Docker ou caso tenha problemas de permissão, recomendamos criar manualmente a pasta vendor na raiz do projeto, e dar permissão 777 para ela. Também é necessário a permissão 777 para a pasta App\Cache e no arquivo composer.lock.json. Para subir o container basta executar o comando

  • docker-compose up -d --no-deps --build

Depois você poderá instalar as dependências do composer com o comando abaixo:

  • docker-compose exec app composer install

Os testes unitários poderão ser executados com o comando abaixo:

  • docker-compose exec app ./vendor/bin/phpunit tests --colors

O banco de dados poderá ser importando utilizando o arquivo sql na raiz do projeto. As propriedades de conexão com o DB (MySql) se encontram no .env do projeto ou no arquivo docker-composer.yml. Para utilizar o DB no Workbench, Dbeaver ou similares, altere o host de "db" para 127.0.0.1 para conectar via TCP ou localhost para conexão via socket.

Instalação Sem o Docker

Este projeto pode ser inicializado usando servidor local do PHP com o seguinte comando

php -S localhost:8000 -t public

É importante que seja apontado para a pasta public. Também pode ser utilizado utilizando Vhosts apontando para a pasta public

Requisitos

Para o projeto funcionar corretamente é importante ter o PHP versão >= 7.2.+ e o MySql. É importante dar pemissão de leitura e escrita na pasta /public/images/product.

Mysql

É preciso definir o comando abaixo no MySql para que o sistema leia corretamente o arquivo .sql

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

Importe o arquivo .sql que está na raiz do projeto para um banco de dados MySql.

.env

Abra o arquivo .env na pasta raiz do projeto e altere as variáveis de ambiente com os dados do banco de dados que será utilizado.

Composer

Este projeto utiliza o composer para o gerenciamento de bibliotecas, por isso é importante ter o composer instalado. Após instalado rosa o comando

composer install

Criando Controller

Em Controller temos todos os arquivos controladores deste projeto. Caso seja necessário adicionar algum é bem simples, bastando seguir o modelo abaixo:

<?php

/*
 * This file is part of the leviframework to projetc webjump.
 *
 * (c) Levi Costa <levi.costa1@gmail.com>
 *
 * For non-commercial use
 * 
 */
 
 /*
  * Set PHP heavily typed
  */
declare(strict_types=1);
namespace App\Controller;

use Psr\Http\Message\ResponseInterface;

/**
 * Class Controller.
 *
 * @author Levi Costa <levi.costa1@gmail.com>
 */
class Controller extends Controller
{

	/**
     * @var ResponseInterface
     */
	private $response;

	public function __construct(ResponseInterface $response)
	{
		parent::__construct();
		$this->response = $response;
	}
}

Aqui definimos o PHP como fortemente tipado e também extendemos a classe Controller e definindo nosso namespace para App\Controller.

Criando Model

Da mesma maneira criar um model é bem simples, basta seguir o modelo abaixo:

<?php

/*
 * This file is part of the leviframework to projetc webjump.
 *
 * (c) Levi Costa <levi.costa1@gmail.com>
 *
 * For non-commercial use
 * 
 */

 
 /*
  * Set PHP heavily typed
  */
declare(strict_types=1);
namespace App\Model;

class Model extends Connection
{

	/**
     * @var string
     * @label('table name')
     */
	private static $table = 'table_name';
	
	public function __construct()
	{
		parent::__construct();
	}
}

Aqui definimos o PHP como fortemente tipado e também extendemos a classe Connection e definindo nosso namespace para App\Model. Para maiores instruções de utilização de comando de banco de dados consulte a documentação em Faapz PDO

Adicionando Rotas

Para adicionar rotas basta no arquivo public/index.php adicionar o controlador as definições dentro da função addDefinitions() da seguinte forma:

Controller::class => create(Controller::class)
        ->constructor(get('Response')),
        'Response' => function(){
          return new Response();
        }

Pode ser passado mais parâmetros no constructor, basta adiciona-los aqui.

E dentro da variável $routes na função simpleDispatcher() poderá adicionar as rotas como no exemplo abaixo:

$route->get('/url', [Controller::class, 'function']);
$route->post('/url', [Controller::class, 'function']);

Bibliotecas

As bibliotecas utilizadas para este projeto foram:

Container de injeção para auxiliar envio injeções sem necessidade de um framework

Biblioteca para manipulação de requisições

Implementações da PSR-7 com interfaces HTTP Mensagens

Implementação de Rotas Rápidas

Implementação de Rotas Rápidas

Executa menipuladores descobertos pelas rotas

Implementação para emitir respostas ao servidor PHP

Implementação para leitura de váriaveis no arquivo .env

Método de ajuda para debugar no projeto

Auxilia na conexão PDO com banco de dados

Utilização de camada de visualização blade do laravel no projeto

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0