criei meu autoloader, o controller, pasta de rotas, mas ao importar o controller no com 'use' no arquivo 'public/index.php' ocorre um erro. Só funciona se eu importar com require_once.
O engraçado é que o PersonRepository funciona importado pelo 'use', mas meus controllers não.
autoloader
{
"autoload": {
"psr-4": {
"App\\Test\\": "src/"
}
}
}
Controller
<?php
declare(strict_types=1);
namespace App\Test\Controller\Pessoa;
use App\Test\Controller\Controller;
use App\Test\Repository\PersonRepository;
class ListaPessoasController implements Controller
{
public function __construct(private PersonRepository $personRepository)
{
}
public function processaRequisicao()
{
$pessoas = $this->personRepository->getAll();
require_once __DIR__ . '/../../../views/home.php';
}
}
Config/route.php
<?php
declare(strict_types=1);
use App\Test\Controller\Pessoa\ListaPessoasController;
return [
'GET|/todos' => ListaPessoasController::class,
];
public/index.php
<?php
declare(strict_types=1);
use App\Test\Controller\Pessoa\ListaPessoasController;
use App\Test\Repository\PersonRepository;
require_once __DIR__ . '/../vendor/autoload.php';
$servername = "";
$username = "";
$password = "";
$dbName = "";
try {
$pdo = new PDO("mysql:host=$servername;dbname=$dbName", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $error) {
echo "Connection failed: " . $error->getMessage();
}
$personRepository = new PersonRepository($pdo);
$routes = require_once __DIR__ . "/../config/route.php";
$pathInfo = $_SERVER['PATH_INFO'] ?? '/';
$httpMethod = $_SERVER['REQUEST_METHOD'];
$key = "$httpMethod|$pathInfo";
if (array_key_exists($key, $routes)) {
$controllerClass = $routes["$httpMethod|$pathInfo"];
$controller = new $controllerClass($personRepository);
} else {
echo "Algum erro ao tentar carregar";
}
/** @var Controller $controller */
$controller->processaRequisicao();
Alguem poderia me ajudar, eu já estou sem ideias para testar. desde já agradeço demais.