PHP Classes

File: index.php

Recommend this page to a friend!
  Classes of Rodrigo Faustino   FastbackPHP   index.php   Download  
File: index.php
Role: Example script
Content type: text/plain
Description: Example script
Class: FastbackPHP
Automate the creation of PHP REST APIs
Author: By
Last change:
Date: 1 month ago
Size: 2,401 bytes
 

Contents

Class file image Download
<?php
namespace Fast\Back;
use
Fast\Back\Rotas\Router;
use
Fast\Back\Http\HttpHeader;
use
Fast\Back\Rotas\AttributeRouter;
use
Exception;

require_once
'vendor/autoload.php';

set_time_limit(0);
ini_set('memory_limit', '1024M');
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/logs/php_errors.log');
error_reporting(E_ALL);
 
if (!
file_exists(__DIR__ . '/logs')) {
  
mkdir(__DIR__ . '/logs', 0755, true);
}

HttpHeader::setDefaultHeaders();

if (
$_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
   
http_response_code(204);
    exit();
}

$roteador = new AttributeRouter();

$metodoHttp = $_SERVER['REQUEST_METHOD'];
$uri = $_SERVER['REQUEST_URI'];

$caminhoControladores = __DIR__ . '/Controllers';
$namespaceBase = 'Fast\\Back\\Controllers';

$classesControladoras = obterClassesControladoras($caminhoControladores, $namespaceBase);

foreach (
$classesControladoras as $classeControladora) {
   
$roteador->passaControlador($classeControladora);
}

$roteador->resolve($metodoHttp, $uri);

/**
 * Função para obter todas as classes de controladores no diretório Controllers
 *
 * @param string $caminhoControladores Caminho para o diretório de controladores
 * @param string $namespaceBase Namespace base dos controladores
 * @return array Lista de nomes completos das classes de controladores
 */
   
function obterClassesControladoras($caminhoControladores, $namespaceBase) {
       
$classesControladoras = [];

       
$iterador = new \RecursiveIteratorIterator(
            new \
RecursiveDirectoryIterator($caminhoControladores)
        );

        foreach (
$iterador as $arquivo) {
            if (
$arquivo->isFile() && $arquivo->getExtension() === 'php') {
               
$caminhoRelativo = substr($arquivo->getPathname(), strlen($caminhoControladores));
               
$caminhoRelativo = ltrim($caminhoRelativo, DIRECTORY_SEPARATOR);
               
$caminhoRelativo = substr($caminhoRelativo, 0, -4);
               
$parteNomeClasse = str_replace(DIRECTORY_SEPARATOR, '\\', $caminhoRelativo);
               
$nomeClasse = $namespaceBase . '\\' . $parteNomeClasse;

            if (!
class_exists($nomeClasse)) {
                require_once
$arquivo->getPathname();
            }
            if (
class_exists($nomeClasse)) {
               
$classesControladoras[] = $nomeClasse;
            }
        }
    }

    return
$classesControladoras;
}