Skip to content

levicosta201/mudah-framework

Repository files navigation

Mudah Framework

Este README deve ser utilizado para consultas do projeto e instruções de instalação do mesmo.

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.

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 naframework to projetc webjump.
 *
 * (c) na Costa <na.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 na Costa <na.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 naframework to projetc webjump.
 *
 * (c) na Costa <na@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']);

Instalação

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

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