Skip to content

Commit b2006ff

Browse files
committed
fix(laravel): do not require files while autoconfiguring
1 parent ba5cea7 commit b2006ff

File tree

3 files changed

+30
-7
lines changed

3 files changed

+30
-7
lines changed

src/Laravel/ApiPlatformProvider.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1386,7 +1386,7 @@ public function boot(): void
13861386
private function tagServices(): void
13871387
{
13881388
$directory = app_path();
1389-
$classes = ReflectionClassRecursiveIterator::getReflectionClassesFromDirectories([$directory]);
1389+
$classes = ReflectionClassRecursiveIterator::getReflectionClassesFromDirectories([$directory], false);
13901390

13911391
$this->app->tag([FilterQueryExtension::class], QueryExtensionInterface::class);
13921392
$this->autoconfigure($classes, QueryExtensionInterface::class);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the API Platform project.
5+
*
6+
* (c) Kévin Dunglas <[email protected]>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
declare(strict_types=1);
13+
14+
namespace Workbench\App\Modules\FirstModule\Tests\Feature;
15+
16+
use Tests\TestCase;
17+
18+
pest()->extend(TestCase::class);
19+
20+
it('does nothing', function (): void {
21+
});

src/Metadata/Util/ReflectionClassRecursiveIterator.php

+8-6
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ private function __construct()
3636
*
3737
* @return array<class-string, \ReflectionClass>
3838
*/
39-
public static function getReflectionClassesFromDirectories(array $directories): array
39+
public static function getReflectionClassesFromDirectories(array $directories, bool $requireFile = true): array
4040
{
4141
$id = hash('xxh3', implode('', $directories));
4242
if (isset(self::$localCache[$id])) {
@@ -61,11 +61,13 @@ public static function getReflectionClassesFromDirectories(array $directories):
6161
$sourceFile = realpath($sourceFile);
6262
}
6363

64-
try {
65-
require_once $sourceFile;
66-
} catch (\Throwable) {
67-
// invalid PHP file (example: missing parent class)
68-
continue;
64+
if ($requireFile) {
65+
try {
66+
require_once $sourceFile;
67+
} catch (\Throwable) {
68+
// invalid PHP file (example: missing parent class)
69+
continue;
70+
}
6971
}
7072

7173
$includedFiles[$sourceFile] = true;

0 commit comments

Comments
 (0)