Skip to content

Commit 70778f0

Browse files
committed
fix: correction du locateFile
ne trouvait pas les fichiers normalement
1 parent 1928572 commit 70778f0

1 file changed

Lines changed: 14 additions & 12 deletions

File tree

Locator.php

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public function locateFile(string $file, ?string $folder = null, string $ext = '
5656
if (! empty($folder) && strpos($file, $folder) === 0) {
5757
$file = substr($file, strlen($folder . '/'));
5858
}
59-
59+
6060
// N'est-il pas namespaced ? Essayez le dossier d'application.
6161
if (strpos($file, '\\') === false) {
6262
return $this->legacyLocate($file, $folder);
@@ -67,51 +67,53 @@ public function locateFile(string $file, ?string $folder = null, string $ext = '
6767
$file = ltrim($file, '\\');
6868

6969
$segments = explode('\\', $file);
70-
70+
7171
// Le premier segment sera vide si une barre oblique commence le nom du fichier.
7272
if (empty($segments[0])) {
7373
unset($segments[0]);
7474
}
75-
75+
7676
$paths = [];
7777
$filename = '';
7878

7979
// Les espaces de noms sont toujours accompagnés de tableaux de chemins
8080
$namespaces = $this->autoloader->getNamespace();
81-
82-
foreach (array_keys($namespaces) as $namespace) {
81+
$keys = array_keys($namespaces);
82+
sort($keys);
83+
84+
foreach ($keys as $namespace) {
8385
if (substr($file, 0, strlen($namespace) + 1) === $namespace . '\\') {
8486
$fileWithoutNamespace = substr($file, strlen($namespace));
85-
87+
8688
// Il peut y avoir des sous-espaces de noms du même fournisseur,
8789
// donc écrasez-les avec des espaces de noms trouvés plus tard.
8890
$paths = $namespaces[$namespace];
8991
$filename = ltrim(str_replace('\\', '/', $fileWithoutNamespace), '/');
9092
}
9193
}
92-
94+
9395
// si aucun espace de noms ne correspond, quittez
9496
if (empty($paths)) {
9597
return false;
9698
}
97-
99+
98100
// Vérifier chaque chemin dans l'espace de noms
99101
foreach ($paths as $path) {
100102
// Assurez-vous que la barre oblique finale
101103
$path = rtrim($path, '/') . '/';
102-
104+
103105
// Si nous avons un nom de dossier, la fonction appelante s'attend à ce que ce fichier se trouve
104106
// dans ce dossier, comme "Views" ou "Librairies".
105107
if (! empty($folder) && strpos($path . $filename, '/' . $folder . '/') === false) {
106108
$path .= trim($folder, '/') . '/';
107109
}
108-
109110
$path .= $filename;
111+
110112
if (is_file($path)) {
111113
return $path;
112114
}
113115
}
114-
116+
115117
return false;
116118
}
117119

@@ -239,7 +241,7 @@ public function getClassname(string $file): string
239241
public function search(string $path, string $ext = 'php', bool $prioritizeApp = true): array
240242
{
241243
$path = $this->ensureExt($path, $ext);
242-
244+
243245
$foundPaths = [];
244246
$appPaths = [];
245247

0 commit comments

Comments
 (0)