С интересом наблюдаю как трактуется казалось бы подробно расписанный вопрос. Уже появилась бизнес-логика, пользовательский ввод, но позволю обратить внимание, что про это вообще не было написано ни слова.
Признаю, что вопрос описал плохо, вместо сервис надо было использовать слово класс/модуль, однако постарался описать все максимально подробно, поэтому получилось витиевато. Думаю, что в данном случае код будет гораздо лучше любых словесных описаний.
Код:
class File
{
/**
* @var array[
* 'permissions' integer Permissions in chmod format (default 644).
* 'timestamp' string Timestamp (default null).
* 'rewrite' bool Rewrite if file exists (default false).
* 'append' bool Append content if file exists (default true).
* ]
*/
private $options;
public function __construct(string $filename, array $options)
{
$this->options ...
}
}
Мы хотим использовать сторонний класс. У этого класса есть необязательные опции задаваемые на входе, которыми не факт что вообще пользоваться будем. Но вдруг мы ими все таки решили воспользоваться.
Вопросов тут несколько:
- ожидаете ли вы, что этот $options будет проверен в момент инстанцирования и будут выброшены исключения или все упадет с ошибкой при неправильных данных в полях массива?
- если же он не делает никакой проверки полей, какое поведение вы ожидаете в случае неверно заданного поля:
- падение с ошибкой в месте где будет исполняться?
- объект выполнит задачу молчаливо подставив какие-то дефолтные значения?
- какое-то другое поведение?