diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-09 18:33:14 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-09 18:33:14 +0900 |
| commit | 72cbecaec29cecc723ce29c87d10048114aeef5b (patch) | |
| tree | 99ee7288595afbf1166503d603d7c5a7d08aaae0 /scripts/bench/create-project.sh | |
| parent | f1215ade6e1d6e91a36c8b1c407f5a59a1c2ee0e (diff) | |
| download | php-shirabe-72cbecaec29cecc723ce29c87d10048114aeef5b.tar.gz php-shirabe-72cbecaec29cecc723ce29c87d10048114aeef5b.tar.zst php-shirabe-72cbecaec29cecc723ce29c87d10048114aeef5b.zip | |
feat(symfony-filesystem): finish the Filesystem port and trim its API
doRemove() renames a directory to a random hidden name before emptying
it, and undoes that rename when the final rmdir fails, so a concurrent
process cannot recreate the path mid-removal. It also walks one level at
a time through FilesystemIterator instead of flattening the whole tree,
and lets an inner rmdir failure pass, both as upstream does.
copy() keeps the mode fopen($targetFile, 'w') would have left rather
than the origin's, symlink() and mirror() call readlink() and
getLinkTarget() where upstream does, and a directory iterator that
cannot be opened propagates its UnexpectedValueException instead of
being swallowed or flattened into an IOException.
Error message text is out of scope per docs/known-incompatibilities.md,
so the three TODO(phase-c) markers that only tracked wording are gone,
along with linkException()'s Windows-only branch. So are the arguments
no caller varies -- symlink()'s copyOnWindows, mirror()'s iterator and
options, copy()'s overwriteNewerFiles -- which removes the last
TODO(phase-c) in the file.
New shim functions: readlink, filesystem_iterator, stream_is_local,
strrev and SplFileInfo::getLinkTarget. base64_encode takes bytes so
random_bytes() can feed it.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'scripts/bench/create-project.sh')
0 files changed, 0 insertions, 0 deletions
