Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5952eb3

Browse files
Alternative way to initialize ConsoleApplicationResolver
1 parent 5ecd82f commit 5952eb3

File tree

2 files changed

+28
-5
lines changed

2 files changed

+28
-5
lines changed

‎extension.neon‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ parameters:
33
container_xml_path: null
44
constant_hassers: true
55
console_application_loader: null
6+
console_application_kernel_class: null
67

78
parametersSchema:
89
symfony: structure([
910
container_xml_path: schema(string(), nullable())
1011
constant_hassers: bool()
1112
console_application_loader: schema(string(), nullable())
13+
console_application_kernel_class: schema(string(), nullable())
1214
])
1315

1416
rules:
@@ -23,7 +25,7 @@ services:
2325
# console resolver
2426
-
2527
factory: PHPStan\Symfony\ConsoleApplicationResolver
26-
arguments: [%symfony.console_application_loader%]
28+
arguments: [%symfony.console_application_loader%, %symfony.console_application_kernel_class%]
2729

2830
# service map
2931
symfony.serviceMapFactory:

‎src/Symfony/ConsoleApplicationResolver.php‎

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use PHPStan\Reflection\ClassReflection;
66
use PHPStan\ShouldNotHappenException;
77
use PHPStan\Type\ObjectType;
8+
use Symfony\Bundle\FrameworkBundle\Console\Application;
89
use function file_exists;
910
use function get_class;
1011
use function is_readable;
@@ -15,12 +16,16 @@ final class ConsoleApplicationResolver
1516
/** @var \Symfony\Component\Console\Application|null */
1617
private $consoleApplication;
1718

18-
public function __construct(?string $consoleApplicationLoader)
19+
/**
20+
* @phpcsSuppress SlevomatCodingStandard.ControlStructures.EarlyExit.EarlyExitNotUsed
21+
*/
22+
public function __construct(?string $consoleApplicationLoader, ?string $consoleApplicationKernelClass)
1923
{
20-
if ($consoleApplicationLoader === null) {
21-
return;
24+
if ($consoleApplicationLoader !== null) {
25+
$this->consoleApplication = $this->loadConsoleApplication($consoleApplicationLoader);
26+
} elseif ($consoleApplicationKernelClass !== null) {
27+
$this->consoleApplication = $this->createConsoleApplication($consoleApplicationKernelClass);
2228
}
23-
$this->consoleApplication = $this->loadConsoleApplication($consoleApplicationLoader);
2429
}
2530

2631
/**
@@ -38,6 +43,22 @@ private function loadConsoleApplication(string $consoleApplicationLoader)
3843
return require $consoleApplicationLoader;
3944
}
4045

46+
/**
47+
* @return \Symfony\Component\Console\Application|null
48+
* @phpcsSuppress SlevomatCodingStandard.TypeHints.TypeHintDeclaration.MissingReturnTypeHint
49+
*/
50+
private function createConsoleApplication(string $consoleApplicationKernelClass)
51+
{
52+
if (!class_exists($consoleApplicationKernelClass)
53+
|| !is_a($consoleApplicationKernelClass, 'Symfony\Component\HttpKernel\KernelInterface')
54+
) {
55+
throw new ShouldNotHappenException();
56+
}
57+
$kernel = new $consoleApplicationKernelClass($_SERVER['APP_ENV'] ?? 'dev', (bool) $_SERVER['APP_DEBUG'] ?? true);
58+
59+
return new Application($kernel);
60+
}
61+
4162
/**
4263
* @return \Symfony\Component\Console\Command\Command[]
4364
*/

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /