| 1 | <?php  | 
            ||
| 19 | class Values implements JWKSourceInterface  | 
            ||
| 20 | { | 
            ||
| 21 | /**  | 
            ||
| 22 |      * {@inheritdoc} | 
            ||
| 23 | */  | 
            ||
| 24 | public function create(ContainerBuilder $container, $id, array $config)  | 
            ||
| 37 | |||
| 38 | /**  | 
            ||
| 39 |      * {@inheritdoc} | 
            ||
| 40 | */  | 
            ||
| 41 | public function getKey()  | 
            ||
| 45 | |||
| 46 | /**  | 
            ||
| 47 |      * {@inheritdoc} | 
            ||
| 48 | */  | 
            ||
| 49 | public function addConfiguration(NodeDefinition $node)  | 
            ||
| 60 | }  | 
            ||
| 61 | 
Let’s take a look at an example:
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.
Available Fixes
Change the type-hint for the parameter:
Add an additional type-check:
Add the method to the parent class: