While this is perfectly valid, the fully qualified name of Certificate::TRIPLEDES_CBC
could just as well be replaced by self::TRIPLEDES_CBC. Referencing local members
with self:: assured the access will still work when the class is renamed, makes
it perfectly clear that the member is in fact local and will usually be shorter.
Loading history...
28
$definition->setFactory([
29
new Reference(JWKFactory::class),
30
'createFromValues',
31
]);
32
$definition->setArguments([
33
json_decode($config['value'], true),
34
]);
35
36
return $definition;
37
}
38
39
/**
40
* {@inheritdoc}
41
*/
42
public function getKeySet(): string
43
{
44
return 'jwkset';
45
}
46
47
/**
48
* {@inheritdoc}
49
*/
50
public function addConfiguration(NodeDefinition $node)
It seems like you code against a specific sub-type and not the parent class Symfony\Component\Config...\Builder\NodeDefinition as the method children() does only exist in the following sub-classes of Symfony\Component\Config...\Builder\NodeDefinition: Symfony\Component\Config...der\ArrayNodeDefinition. Maybe you want to instanceof check for one of these explicitly?
Let’s take a look at an example:
abstractclassUser{/** @return string */abstractpublicfunctiongetPassword();}classMyUserextendsUser{publicfunctiongetPassword(){// return something}publicfunctiongetDisplayName(){// return some name.}}classAuthSystem{publicfunctionauthenticate(User$user){$this->logger->info(sprintf('Authenticating %s.',$user->getDisplayName()));// do something.}}
In the above example, the authenticate() method works fine as long as you just pass
instances of MyUser. However, if you now also want to pass a different sub-classes
of User which does not have a getDisplayName() method, the code will break.
classAuthSystem{publicfunctionauthenticate(User$user){if($userinstanceofMyUser){$this->logger->info(/** ... */);}// or alternativelyif(!$userinstanceofMyUser){thrownew\LogicException('$user must be an instance of MyUser, '.'other instances are not supported.');}}}
Note: PHP Analyzer uses reverse abstract interpretation to narrow down the types
inside the if block in such a case.
This check looks for accesses to local static members using the fully qualified name instead of
self::.While this is perfectly valid, the fully qualified name of
Certificate::TRIPLEDES_CBCcould just as well be replaced byself::TRIPLEDES_CBC. Referencing local members withself::assured the access will still work when the class is renamed, makes it perfectly clear that the member is in fact local and will usually be shorter.