@@ -27,14 +27,13 @@ use the logger in a controller, add a new argument type-hinted with ``LoggerInte
2727
2828 use Psr\Log\LoggerInterface;
2929 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
30+ use Symfony\Component\HttpFoundation\Response;
3031 use Symfony\Component\Routing\Annotation\Route;
3132
3233 class DefaultController extends AbstractController
3334 {
34- /**
35- * @Route("/hello/{name}")
36- */
37- public function index($name, LoggerInterface $logger)
35+ #[Route('/hello/{name}', methods: ['GET'])]
36+ public function index(string $name, LoggerInterface $logger): Response
3837 {
3938 $logger->info("Saying hello to $name!");
4039
@@ -93,7 +92,7 @@ this code directly in your controller, create a new class::
9392
9493 class GreetingGenerator
9594 {
96- public function getRandomGreeting()
95+ public function getRandomGreeting(): string
9796 {
9897 $greetings = ['Hey', 'Yo', 'Aloha'];
9998 $greeting = $greetings[array_rand($greetings)];
@@ -102,7 +101,7 @@ this code directly in your controller, create a new class::
102101 }
103102 }
104103
105- Great! You can use this immediately in your controller::
104+ Great! You can use it immediately in your controller::
106105
107106 <?php
108107 // src/Controller/DefaultController.php
@@ -111,14 +110,13 @@ Great! You can use this immediately in your controller::
111110 use App\GreetingGenerator;
112111 use Psr\Log\LoggerInterface;
113112 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
113+ use Symfony\Component\HttpFoundation\Response;
114114 use Symfony\Component\Routing\Annotation\Route;
115115
116116 class DefaultController extends AbstractController
117117 {
118- /**
119- * @Route("/hello/{name}")
120- */
121- public function index($name, LoggerInterface $logger, GreetingGenerator $generator)
118+ #[Route('/hello/{name}', methods: ['GET'])]
119+ public function index(string $name, LoggerInterface $logger, GreetingGenerator $generator): Response
122120 {
123121 $greeting = $generator->getRandomGreeting();
124122
@@ -141,14 +139,11 @@ difference is that it's done in the constructor:
141139
142140 class GreetingGenerator
143141 {
144- + private $logger;
145- +
146- + public function __construct(LoggerInterface $logger)
142+ + public function __construct(private readonly LoggerInterface $logger)
147143 + {
148- + $this->logger = $logger;
149144 + }
150145
151- public function getRandomGreeting()
146+ public function getRandomGreeting(): string
152147 {
153148 // ...
154149
@@ -178,11 +173,8 @@ that extends ``AbstractExtension``::
178173
179174 class GreetExtension extends AbstractExtension
180175 {
181- private $greetingGenerator;
182-
183- public function __construct(GreetingGenerator $greetingGenerator)
176+ public function __construct(private readonly GreetingGenerator $greetingGenerator)
184177 {
185- $this->greetingGenerator = $greetingGenerator;
186178 }
187179
188180 public function getFilters()
@@ -192,7 +184,7 @@ that extends ``AbstractExtension``::
192184 ];
193185 }
194186
195- public function greetUser($name)
187+ public function greetUser(string $name): string
196188 {
197189 $greeting = $this->greetingGenerator->getRandomGreeting();
198190
0 commit comments