Files
2026-05-29 04:33:03 -04:00

31 lines
973 B
PHP

<?php declare(strict_types=1);
namespace App\Support\Architecture;
final class DependencyMapGenerator
{
public function generate(): array
{
$finder = new ArchitectureFileFinder();
$files = $finder->phpFiles(['app/Domain', 'app/Http/Controllers', 'app/Providers']);
$map = [];
foreach ($files as $file) {
$relative = str_replace(base_path().'/', '', $file);
$contents = file_get_contents($file) ?: '';
preg_match_all('/^use\s+([^;]+);/m', $contents, $matches);
$map[$relative] = array_values(array_unique($matches[1] ?? []));
}
return [
'generated_at' => now()->toISOString(),
'files' => $map,
'forbidden_dependency_examples' => [
'SchoolCore -> IslamicSundaySchool',
'Domain services -> Illuminate\\Http\\Request',
'Controllers -> provider SDKs',
],
];
}
}