Skip to content

Commit b1cee0d

Browse files
committed
pick ref() or service() function name, based on project
1 parent a0fe3f8 commit b1cee0d

File tree

4 files changed

+34
-3
lines changed

4 files changed

+34
-3
lines changed

src/ExprResolver/StringExprResolver.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use PhpParser\Node\Expr\FuncCall;
1313
use PhpParser\Node\Name\FullyQualified;
1414
use PhpParser\Node\Scalar\String_;
15+
use Symplify\PhpConfigPrinter\Naming\ReferenceFunctionNameResolver;
1516
use Symplify\PhpConfigPrinter\NodeFactory\CommonNodeFactory;
1617
use Symplify\PhpConfigPrinter\NodeFactory\ConstantNodeFactory;
1718
use Symplify\PhpConfigPrinter\ValueObject\FunctionName;
@@ -69,7 +70,7 @@ public function resolve(
6970
return $this->resolveServiceReferenceExpr(
7071
$value,
7172
$skipServiceReference,
72-
FunctionName::SERVICE,
73+
ReferenceFunctionNameResolver::resolve(),
7374
$isRoutingImport
7475
);
7576
}

src/ExprResolver/TaggedReturnsCloneResolver.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use PhpParser\Node\ArrayItem;
88
use PhpParser\Node\Expr\Array_;
99
use Symfony\Component\Yaml\Tag\TaggedValue;
10+
use Symplify\PhpConfigPrinter\Naming\ReferenceFunctionNameResolver;
1011
use Symplify\PhpConfigPrinter\ValueObject\FunctionName;
1112

1213
final readonly class TaggedReturnsCloneResolver
@@ -23,7 +24,7 @@ public function resolve(TaggedValue $taggedValue): Array_
2324
$expr = $this->serviceReferenceExprResolver->resolveServiceReferenceExpr(
2425
$serviceName,
2526
false,
26-
FunctionName::SERVICE
27+
ReferenceFunctionNameResolver::resolve()
2728
);
2829

2930
return new Array_([new ArrayItem($expr)]);
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Symplify\PhpConfigPrinter\Naming;
6+
7+
use Symplify\PhpConfigPrinter\ValueObject\FunctionName;
8+
9+
/**
10+
* This helped method loads existing functions to refer a service
11+
* ref() or service() based on the Symfony version of current project
12+
*/
13+
final class ReferenceFunctionNameResolver
14+
{
15+
/**
16+
* @return FunctionName::REF|FunctionName::SERVICE
17+
*/
18+
public static function resolve(): string
19+
{
20+
if (function_exists(FunctionName::REF)) {
21+
return FunctionName::REF;
22+
}
23+
24+
// fallback to service
25+
return FunctionName::SERVICE;
26+
}
27+
}

src/NodeModifier/SingleFactoryReferenceNodeModifier.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use PhpParser\Node\Expr\FuncCall;
1212
use PhpParser\Node\Name\FullyQualified;
1313
use PhpParser\Node\Scalar\String_;
14+
use Symplify\PhpConfigPrinter\Naming\ReferenceFunctionNameResolver;
1415
use Symplify\PhpConfigPrinter\NodeFactory\ArgsNodeFactory;
1516
use Symplify\PhpConfigPrinter\ValueObject\FunctionName;
1617

@@ -70,6 +71,7 @@ private function createServiceFuncCall(string $serviceName): FuncCall
7071
{
7172
$serviceFuncCallArgs = $this->argsNodeFactory->createFromValues([$serviceName]);
7273

73-
return new FuncCall(new FullyQualified(FunctionName::SERVICE), $serviceFuncCallArgs);
74+
$functionName = ReferenceFunctionNameResolver::resolve();
75+
return new FuncCall(new FullyQualified($functionName), $serviceFuncCallArgs);
7476
}
7577
}

0 commit comments

Comments
 (0)