У меня есть уровень абстракции файловой системы, так что я могу использовать другую реализацию по мере необходимости
interface FileSystem
{
public function createTemporaryDirectory();
}
Я создал класс обработчика, который использует файловую систему и вызов createTemporaryDirectory
class Handler
{
private $fileSystem;
public function __construct(FileSystem $fileSystem)
{
$this->fileSystem = $fileSystem;
}
public function handle()
{
//option 1 throw exception here
if (!$this->fileSystem->createTemporaryDirectory())
throw new DirectoryException('Cannot create temp directory');
//option 2 let throw exception implemented inside createTemporaryDirectory
$this->fileSystem->createTemporaryDirectory()
}
Мой вопрос, что является лучшей практикой? бросить исключение внутри функции дескриптора или из реализации метода createTeoraryDirectory файловой системы?
Задача ещё не решена.
Других решений пока нет …