@kaxa3201

Как определить является ли переменная файлом или строкой?

загружаю файлы в с помощью клиента Amazon S3 в AWS SDK
есть метод которая выполняет свою задачу и записывает данные потока
$result = $this->s3->putObject([
                'Bucket' => $this->config['buckets'][$bucket],
                'Key'    => $key,
                'Body'   => $content,
            ]);

Сейчас есть необходимость записи прямо из файла
$result = $this->s3->putObject([
                'Bucket' => $this->config['buckets'][$bucket],
                'Key'    => $key,
                'SourceFile'   => $content,
            ]);

хочу избежать дублирования кода, поэтому нужно как то определить является ли переменная $content файлом или строкой? Или есть варианты лучше?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Для таких ситуаций DRY - это антипаттерн. Не стоит объединять вместе разные методы только потому, что они похожи. Лучше выделите 2 метода: один для контента, другой для файлов. В вашем случае например Body не может быть строкой "/some/path" потому, что это вполне валидный путь к файлу, пусть файла и не существует.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ar2rsoft
PHP-developer
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы