| 1 | <?php |
||
| 9 | class IdentifierField extends EnumerationField { |
||
| 10 | |||
| 11 | /** @var IdentifiersProvider */ |
||
| 12 | private $identifiers; |
||
| 13 | |||
| 14 | /** |
||
| 15 | * @param FieldRegistry $fields |
||
| 16 | * @param IdentifiersProvider $identifiers |
||
| 17 | */ |
||
| 18 | public function __construct(FieldRegistry $fields, IdentifiersProvider $identifiers) { |
||
| 19 | parent::__construct($fields); |
||
| 20 | $this->identifiers = $identifiers; |
||
| 21 | } |
||
| 22 | |||
| 23 | /** |
||
| 24 | * @param Parameter $parameter |
||
| 25 | * @return bool |
||
| 26 | */ |
||
| 27 | public function handles(Parameter $parameter) { |
||
| 28 | return $parameter->getType() instanceof IdentifierType; |
||
| 29 | } |
||
| 30 | |||
| 31 | /** |
||
| 32 | * @param Parameter $parameter |
||
| 33 | * @return mixed |
||
| 34 | * @throws \Exception |
||
| 35 | */ |
||
| 36 | protected function getOptions(Parameter $parameter) { |
||
| 37 | return $this->identifiers->getIdentifiers($this->getType($parameter)->getTarget()); |
||
| 38 | } |
||
| 39 | |||
| 40 | /** |
||
| 41 | * @param Parameter $parameter |
||
| 42 | * @return IdentifierType |
||
| 43 | */ |
||
| 44 | private function getType(Parameter $parameter) { |
||
|
|
|||
| 45 | return $parameter->getType(); |
||
| 46 | } |
||
| 47 | |||
| 48 | /** |
||
| 49 | * @param Parameter $parameter |
||
| 50 | * @return \watoki\reflect\Type |
||
| 51 | */ |
||
| 52 | protected function getOptionType(Parameter $parameter) { |
||
| 55 | } |
Overwriting private methods is generally fine as long as you also use private visibility. It might still be preferable for understandability to use a different method name.