1515use PhpParser \Node \Stmt \Expression ;
1616use PhpParser \Node \Stmt \Namespace_ ;
1717use PhpParser \NodeFinder ;
18+ use PhpParser \Parser ;
1819use PhpParser \ParserFactory ;
1920use PhpParser \PrettyPrinter \Standard ;
2021use 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