Skip to content

Commit 28b383a

Browse files
committed
feat: support nikic/php-parser v5
1 parent ca323dd commit 28b383a

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
],
2323
"require": {
2424
"shopware/core": "~6.6.0",
25-
"nikic/php-parser": "^4.13.0"
25+
"nikic/php-parser": "^4.13.0|^5.0.0"
2626
},
2727
"suggest": {
2828
"frosh/lazy-sizes": "*"

src/DependencyInjection/GeneratorCompilerPass.php

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use PhpParser\Node\Stmt\Expression;
1616
use PhpParser\Node\Stmt\Namespace_;
1717
use PhpParser\NodeFinder;
18+
use PhpParser\Parser;
1819
use PhpParser\ParserFactory;
1920
use PhpParser\PrettyPrinter\Standard;
2021
use Shopware\Core\Content\Media\File\FileSaver as OriginalFileSaver;
@@ -39,8 +40,7 @@ public function process(ContainerBuilder $container): void
3940
return;
4041
}
4142

42-
$phpParser = (new ParserFactory())->create(ParserFactory::ONLY_PHP7);
43-
$ast = $phpParser->parse($fileContents);
43+
$ast = $this->getPhpParser()->parse($fileContents);
4444

4545
if ($ast === null) {
4646
$this->removeReflectionClass();
@@ -93,6 +93,15 @@ public function process(ContainerBuilder $container): void
9393
->setClass(__NAMESPACE__ . '\\' . $this->getClassName());
9494
}
9595

96+
private function getPhpParser(): Parser
97+
{
98+
if (\method_exists(ParserFactory::class, 'createForHostVersion')) {
99+
return (new ParserFactory())->createForHostVersion();
100+
}
101+
102+
return (new ParserFactory())->create(ParserFactory::ONLY_PHP7);
103+
}
104+
96105
/**
97106
* @param array<Stmt> $ast
98107
*/
@@ -132,8 +141,7 @@ private function handleThumbnailService(NodeFinder $nodeFinder, array $ast): voi
132141
private function handleFileSaver(NodeFinder $nodeFinder, array $ast): void
133142
{
134143
$renameThumbnailNode = $this->getClassMethod($nodeFinder, 'renameThumbnail', $ast);
135-
$renameThumbnailNode->stmts = (new ParserFactory())->create(ParserFactory::PREFER_PHP7)
136-
->parse('<?php return [];');
144+
$renameThumbnailNode->stmts = $this->getPhpParser()->parse('<?php return [];');
137145
}
138146

139147
/**
@@ -233,7 +241,7 @@ private function getClassName(): string
233241
private function handleCreateThumbnailsForSizes(ClassMethod $createThumbnailsForSizesNode): void
234242
{
235243
// we don't need to generate the files, so we just return the array
236-
$createThumbnailsForSizesNode->stmts = (new ParserFactory())->create(ParserFactory::PREFER_PHP7)
244+
$createThumbnailsForSizesNode->stmts = $this->getPhpParser()
237245
->parse('<?php if ($thumbnailSizes === null) {
238246
return [];
239247
}
@@ -258,7 +266,7 @@ private function handleCreateThumbnailsForSizes(ClassMethod $createThumbnailsFor
258266
private function handleGenerateAndSaveNode(ClassMethod $generateAndSaveNode): void
259267
{
260268
// we don't need to generate the files, so we just return the array
261-
$generateAndSaveNode->stmts = (new ParserFactory())->create(ParserFactory::PREFER_PHP7)
269+
$generateAndSaveNode->stmts = $this->getPhpParser()
262270
->parse('<?php if ($sizes === null || $sizes->count() === 0) {
263271
return [];
264272
}

0 commit comments

Comments
 (0)