1: | <?php declare(strict_types=1); |
2: | |
3: | namespace Salient\Contract\Polyfill; |
4: | |
5: | /** |
6: | * Base class for stream wrappers that support filesystem operations |
7: | * |
8: | * @api |
9: | */ |
10: | abstract class FilesystemStreamWrapper extends StreamWrapper |
11: | { |
12: | /** |
13: | * Close directory handle |
14: | * |
15: | * This method is called in response to {@see closedir()}. |
16: | * |
17: | * Any resources which were locked, or allocated, during opening and use of |
18: | * the directory stream should be released. |
19: | * |
20: | * @return bool `true` on success or `false` on failure. |
21: | */ |
22: | abstract public function dir_closedir(): bool; |
23: | |
24: | /** |
25: | * Open directory handle |
26: | * |
27: | * This method is called in response to {@see opendir()}. |
28: | * |
29: | * @param string $path Specifies the URL that was passed to |
30: | * {@see opendir()}. |
31: | * @return bool `true` on success or `false` on failure. |
32: | */ |
33: | abstract public function dir_opendir(string $path, int $options): bool; |
34: | |
35: | /** |
36: | * Read entry from directory handle |
37: | * |
38: | * This method is called in response to {@see readdir()}. |
39: | * |
40: | * @return string|false The next filename, or `false` if there is no next |
41: | * file. |
42: | */ |
43: | abstract public function dir_readdir(); |
44: | |
45: | /** |
46: | * Rewind directory handle |
47: | * |
48: | * This method is called in response to {@see rewinddir()}. |
49: | * |
50: | * Should reset the output generated by |
51: | * {@see HasDirectoryHandles::dir_readdir()}, i.e. the next call to |
52: | * {@see HasDirectoryHandles::dir_readdir()} should return the first entry |
53: | * in the location returned by {@see HasDirectoryHandles::dir_opendir()}. |
54: | * |
55: | * @return bool `true` on success or `false` on failure. |
56: | */ |
57: | abstract public function dir_rewinddir(): bool; |
58: | |
59: | /** |
60: | * Create a directory |
61: | * |
62: | * This method is called in response to {@see mkdir()}. |
63: | * |
64: | * @param string $path Directory which should be created. |
65: | * @param int $mode The value passed to {@see mkdir()}. |
66: | * @param int $options A bitwise mask of values, such as |
67: | * {@see \STREAM_MKDIR_RECURSIVE}. |
68: | * @return bool `true` on success or `false` on failure. |
69: | */ |
70: | abstract public function mkdir(string $path, int $mode, int $options): bool; |
71: | |
72: | /** |
73: | * Renames a file or directory |
74: | * |
75: | * This method is called in response to {@see rename()}. |
76: | * |
77: | * @param string $path_from The URL to the current file. |
78: | * @param string $path_to The URL which the **`path_from`** should be |
79: | * renamed to. |
80: | * @return bool `true` on success or `false` on failure. |
81: | */ |
82: | abstract public function rename(string $path_from, string $path_to): bool; |
83: | |
84: | /** |
85: | * Removes a directory |
86: | * |
87: | * This method is called in response to {@see rmdir()}. |
88: | * |
89: | * @param string $path The directory URL which should be removed. |
90: | * @param int $options A bitwise mask of values, such as |
91: | * {@see \STREAM_MKDIR_RECURSIVE}. |
92: | * @return bool `true` on success or `false` on failure. |
93: | */ |
94: | abstract public function rmdir(string $path, int $options): bool; |
95: | |
96: | /** |
97: | * Advisory file locking |
98: | * |
99: | * This method is called in response to {@see flock()}, |
100: | * {@see file_put_contents()} (when **`flags`** contains {@see \LOCK_EX}), |
101: | * {@see stream_set_blocking()} and when closing the stream |
102: | * ({@see \LOCK_UN}). |
103: | * |
104: | * @param int $operation One of the following: |
105: | * |
106: | * - {@see \LOCK_SH} to acquire a shared lock (reader). |
107: | * - {@see \LOCK_EX} to acquire an exclusive lock (writer). |
108: | * - {@see \LOCK_UN} to release a lock (shared or exclusive). |
109: | * - {@see \LOCK_NB} if you don't want {@see flock()} to block while locking |
110: | * (not supported on Windows). |
111: | * @return bool `true` on success or `false` on failure. |
112: | */ |
113: | abstract public function stream_lock(int $operation): bool; |
114: | |
115: | /** |
116: | * Delete a file |
117: | * |
118: | * This method is called in response to {@see unlink()}. |
119: | * |
120: | * @param string $path The file URL which should be deleted. |
121: | * @return bool `true` on success or `false` on failure. |
122: | */ |
123: | abstract public function unlink(string $path): bool; |
124: | } |
125: |