1 | <?php |
||
3 | class PointsOfInterestLayerExtension extends DataExtension |
||
4 | { |
||
5 | public static $many_many = array( |
||
6 | 'PointsOfInterestLayers' => 'PointsOfInterestLayer', |
||
7 | ); |
||
8 | |||
9 | public static $belongs_many_many_extraFields = array( |
||
10 | 'PointsOfInterestLayers' => array( |
||
11 | 'SortOrder' => 'Int', |
||
12 | ), |
||
13 | ); |
||
14 | |||
15 | /** |
||
16 | * Update cms fields - add list of POIs. |
||
17 | * |
||
18 | * @param FieldList $fields list of existing fields on the object |
||
19 | */ |
||
20 | 2 | public function updateCMSFields(FieldList $fields) |
|
34 | |||
35 | /** |
||
36 | * Use extension point to add the markers |
||
37 | * @param MapAPI &$map reference to object representing the map |
||
38 | * @param $autozoom will be altered to true for autozoom, false not to |
||
39 | */ |
||
40 | public function updateBasicMap(&$map, &$autozoom) |
||
61 | |||
62 | /** |
||
63 | * Only set has geo to true if layers exist |
||
64 | * @param boolean &$hasGeo will be set to true if any layers |
||
65 | */ |
||
66 | public function updateHasGeo(&$hasGeo) |
||
72 | } |
||
73 |
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 implementation 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 interface: