Using constants in PHP 8 attributes
Published on 2022-06-25 • Modified on 2022-06-25
This snippet shows how to use constants in PHP 8 attributes. It is an excellent pro that PHP 8 attributes provide. Before, we had to use plain text in annotations which could be error-prone (and also annoying to write). For example, before we used something like this in a controller @IsGranted("ROLE_ADMIN")
, the role was hardcoded. And, if the ROLE_ADMIN
changed, you had to modify its name in all your code. That's not the case with the attributes. We can introduce a new constant in a User
: class public const ROLE_ADMIN = 'ROLE_ADMIN';
, and use it now in our attribute like below. We can also use class name constants like shown in the Stackoverflow question.
/**
* @see ApiControllerTest::testTestSecured()
*/
#[Route(path: '/api/secured', name: 'api_secured')]
#[IsGranted(User::ROLE_ADMIN)]
public function testSecured(): Response
{
return $this->json(['OK' => true]);
}
More on Stackoverflow Read the doc More on the web Random snippet