fs

Форк
0
/
File.php 
59 строк · 1.2 Кб
1
<?php
2

3
declare(strict_types=1);
4

5
namespace Upside\Std\Fs;
6

7
final class File implements \Stringable
8
{
9
    private string $path;
10

11
    public function __construct(string $path)
12
    {
13
        $this->path = $path;
14
    }
15

16
    public function __toString(): string
17
    {
18
        return $this->path;
19
    }
20

21
    public static function from(string $path): self
22
    {
23
        return new self($path);
24
    }
25

26
    public function rename(string $to): File
27
    {
28
        $new_file = self::from($to);
29

30
        if (!\rename($this->path, $to)) {
31
            throw new \RuntimeException(\sprintf('File "%s" was not renamed to "%s"', $this->path, $to));
32
        }
33

34
        return $new_file;
35
    }
36

37
    public function remove(): self
38
    {
39
        return $this->unlink($this->path);
40
    }
41

42
    private function unlink(string $file): self
43
    {
44
        if (!\unlink($file)) {
45
            throw new \RuntimeException(\sprintf('File "%s" was not removed', $file));
46
        }
47

48
        return $this;
49
    }
50

51
    public function dump(mixed $data): self
52
    {
53
        if(\file_put_contents($this->path, $data) === false){
54
            throw new \RuntimeException(\sprintf('Can\'t to write to the file %s.', $this->path));
55
        }
56

57
        return $this;
58
    }
59
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.