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 c0744c0

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

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-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: 23 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,14 @@ final class ConsoleApplicationResolver
1516
/** @var \Symfony\Component\Console\Application|null */
1617
private $consoleApplication;
1718

18-
public function __construct(?string $consoleApplicationLoader)
19+
public function __construct(?string $consoleApplicationLoader, ?string$consoleApplicationKernelClass)
1920
{
20-
if ($consoleApplicationLoader === null) {
21-
return;
21+
if ($consoleApplicationLoader !== null) {
22+
$this->consoleApplication = $this->loadConsoleApplication($consoleApplicationLoader);
23+
}
24+
if ($consoleApplicationKernelClass !== null) {
25+
$this->consoleApplication = $this->createConsoleApplication($consoleApplicationKernelClass);
2226
}
23-
$this->consoleApplication = $this->loadConsoleApplication($consoleApplicationLoader);
2427
}
2528

2629
/**
@@ -38,6 +41,22 @@ private function loadConsoleApplication(string $consoleApplicationLoader)
3841
return require $consoleApplicationLoader;
3942
}
4043

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

0 commit comments

Comments
(0)

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