Skip to content

Commit c42130d

Browse files
committed
Add wither behavior with PHP8 static return type
1 parent 4c87c94 commit c42130d

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

service_container/calls.rst

+16-3
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,6 @@ instead of mutating the object they were called on::
8888
{
8989
private $logger;
9090

91-
/**
92-
* @return static
93-
*/
9491
public function withLogger(LoggerInterface $logger)
9592
{
9693
$new = clone $this;
@@ -144,3 +141,19 @@ The configuration to tell the container it should do so would be like:
144141
145142
$container->register(MessageGenerator::class)
146143
->addMethodCall('withLogger', [new Reference('logger')], true);
144+
145+
If autowire is enabled, you can also use annotations; with the previous exemple it would be::
146+
147+
/**
148+
* @required
149+
* @return static
150+
*/
151+
public function withLogger(LoggerInterface $logger)
152+
{
153+
$new = clone $this;
154+
$new->logger = $logger;
155+
156+
return $new;
157+
}
158+
159+
You can also leverage the PHP8 ``static`` return type instead of the ``@return static`` annotation. Note if you don't want a method with a PHP8 ``static`` return type and a ``@required`` annotation to behave as a wither, you can add a ``@return $this`` annotation to disable the *returns clone* feature.

0 commit comments

Comments
 (0)