Постоянно встречаюсь с задачей вытягивать из БД данные того или иного объекта. Причем как правило вытягивать их надо или по ID, или по имени (оба ключа уникальны).
Вопрос - создавать в классе менеджера материалов два метода getById и getByName или создать один get($key), в котором проверять, $key - это int или string, и соответственно менять where clause на id=$key или name=$key?
Так как кроме этого поля оба метода вышли бы идентичными.
Я бы не ориентировался на тип, если в будущем понадобится вытаскивать данные по другому полю с таким же типом - ваша логика рухнет, и будет у вас метод get(), который работает только с id и name, но не работает с другими полями.
Как вариант, можно сделать метод get($field_name, $value)
Посторонним В.: Можно и так. Я для таких случаев обычно использую массив возможных значений, просто проверяю if(!in_array($field, $this->available_fields)) {throw new Exception...}