ScopedFilesystemProxy
class ScopedFilesystemProxy implements Filesystem
Isolate every filesystem path behind a dynamically resolved prefix on a fixed disk or one resolved for each operation.
This class deliberately maps the complete path-bearing adapter surface and rejects every unknown call. Percent-encoded segments remain literal names; URL decoding belongs at the HTTP boundary and must happen exactly once.
Traits
Properties
| protected PathNormalizer | $normalizer |
Methods
Apply the callback if the given "value" is (or resolves to) truthy.
Apply the callback if the given "value" is (or resolves to) falsy.
Copy a scoped file to another disk.
Move a scoped file to another disk.
Transfer a file without holding a source lease during the destination write.
Create a dynamically scoped filesystem.
Assert that the given file or directory exists.
Assert that the number of files in path equals the expected count.
Assert that the given file or directory does not exist.
Assert that the given directory is empty.
Assert that the scoped disk contains no files.
Get the full path to a scoped file.
Determine if a scoped path exists using the Flysystem operator.
Read a scoped file using the Flysystem operator.
Get a scoped file size using the Flysystem operator.
Get raw Flysystem visibility for a scoped path.
Write a scoped file using the Flysystem operator.
Create a scoped directory using the Flysystem operator.
Determine if a scoped file or directory exists.
Determine if a scoped file or directory is missing.
Determine if a scoped file exists.
Determine if a scoped file is missing.
Determine if a scoped directory exists.
Determine if a scoped directory is missing.
Get the contents of a scoped file.
Get the contents of a scoped file as decoded JSON.
Create a streamed response for a scoped file.
Create a streamed download response for a scoped file.
Write the contents of a scoped file.
Store an uploaded file on the scoped disk.
Store an uploaded file with a given name on the scoped disk.
Write a scoped file using a stream.
Get the visibility for a scoped path.
Set the visibility for a scoped path.
Prepend to a scoped file.
Append to a scoped file.
Delete scoped files.
Copy a scoped file to another scoped path.
Move a scoped file to another scoped path.
Transfer a file using one resolved source disk and prefix.
Get the size of a scoped file.
Get the checksum of a scoped file.
Get the MIME type of a scoped file.
Get the last modification time of a scoped file.
Get a stream for a scoped file.
Get a partial stream for a scoped file.
Get a temporary URL for a scoped file.
Get a temporary upload URL for a scoped file.
Determine if the inner disk provides temporary URLs.
Determine if the inner disk provides temporary upload URLs.
Get the inner disk configuration.
Get scoped files in a directory.
Get all scoped files in a directory recursively.
Get scoped directories in a directory.
Get all scoped directories in a directory recursively.
Create a scoped directory.
Delete a scoped directory recursively.
Reject access to the inner Flysystem driver.
Reject access to the inner Flysystem adapter.
Reject access to the inner driver client.
Reject mutation of the shared inner disk's temporary URL callback.
Reject mutation of the shared inner disk's temporary upload URL callback.
Reject calls that have not been explicitly mapped through the prefix boundary.
Resolve and validate the prefix for one public operation.
Apply a validated prefix to a normalized user path.
Strip a validated prefix from an inner returned path.
Resolve the inner filesystem for one public operation.
Forward one audited method to the inner disk.
Create the exception for every rejected internal or shared-state mutator.
Details
in
Conditionable at line 23
mixed
when(mixed $value = null, callable|null $callback = null, callable|null $default = null)
Apply the callback if the given "value" is (or resolves to) truthy.
in
Conditionable at line 56
mixed
unless(mixed $value = null, callable|null $callback = null, callable|null $default = null)
Apply the callback if the given "value" is (or resolves to) falsy.
at line 477
bool
copyToDisk(Filesystem|string|UnitEnum $disk, string $from, string|null $to = null)
Copy a scoped file to another disk.
at line 485
bool
moveToDisk(Filesystem|string|UnitEnum $disk, string $from, string|null $to = null)
Move a scoped file to another disk.
in
TransfersFiles at line 41
protected bool
transferFile(Filesystem $source, string $from, Filesystem $destination, string $to)
Transfer a file without holding a source lease during the destination write.
at line 50
__construct(Filesystem|Closure $disk, Closure $prefixResolver, bool $allowRootPassthrough = false)
Create a dynamically scoped filesystem.
at line 61
ScopedFilesystemProxy
assertExists(array|string $path, string|null $content = null)
Assert that the given file or directory exists.
at line 75
ScopedFilesystemProxy
assertCount(string $path, int $count, bool $recursive = false)
Assert that the number of files in path equals the expected count.
at line 86
ScopedFilesystemProxy
assertMissing(array|string $path)
Assert that the given file or directory does not exist.
at line 100
ScopedFilesystemProxy
assertDirectoryEmpty(string $path)
Assert that the given directory is empty.
at line 111
ScopedFilesystemProxy
assertEmpty()
Assert that the scoped disk contains no files.
at line 122
string
path(string $path)
Get the full path to a scoped file.
at line 132
bool
has(string $location)
Determine if a scoped path exists using the Flysystem operator.
at line 142
string
read(string $location)
Read a scoped file using the Flysystem operator.
at line 152
int
fileSize(string $path)
Get a scoped file size using the Flysystem operator.
at line 162
string
visibility(string $path)
Get raw Flysystem visibility for a scoped path.
at line 172
void
write(string $location, string $contents, array $config = [])
Write a scoped file using the Flysystem operator.
at line 181
void
createDirectory(string $location, array $config = [])
Create a scoped directory using the Flysystem operator.
at line 190
bool
exists(string $path)
Determine if a scoped file or directory exists.
at line 200
bool
missing(string $path)
Determine if a scoped file or directory is missing.
at line 210
bool
fileExists(string $path)
Determine if a scoped file exists.
at line 220
bool
fileMissing(string $path)
Determine if a scoped file is missing.
at line 230
bool
directoryExists(string $path)
Determine if a scoped directory exists.
at line 240
bool
directoryMissing(string $path)
Determine if a scoped directory is missing.
at line 250
string|null
get(string $path)
Get the contents of a scoped file.
at line 260
array|bool|float|int|string|null
json(string $path, int $flags = 0)
Get the contents of a scoped file as decoded JSON.
at line 270
StreamedResponse
response(string $path, string|null $name = null, array $headers = [], string $disposition = 'inline')
Create a streamed response for a scoped file.
at line 289
Response
serve(Request $request, string $path, string|null $name = null, array $headers = [])
Create a streamed response for serving a scoped file.
at line 304
StreamedResponse
download(string $path, string|null $name = null, array $headers = [])
Create a streamed download response for a scoped file.
at line 314
Image
image(string $path)
Create an image instance from a scoped file in storage.
at line 332
bool|string
put(string $path, mixed $contents, mixed $options = [])
Write the contents of a scoped file.
at line 343
false|string
putFile(string|File|UploadedFile $path, array|string|File|UploadedFile|null $file = null, mixed $options = [])
Store an uploaded file on the scoped disk.
at line 362
false|string
putFileAs(string|File|UploadedFile $path, array|string|File|UploadedFile|null $file, array|string|null $name = null, mixed $options = [])
Store an uploaded file with a given name on the scoped disk.
at line 388
bool
writeStream(string $path, mixed $resource, array $options = [])
Write a scoped file using a stream.
at line 398
string
getVisibility(string $path)
Get the visibility for a scoped path.
at line 408
bool
setVisibility(string $path, string $visibility)
Set the visibility for a scoped path.
at line 418
bool
prepend(string $path, string $data, string $separator = PHP_EOL)
Prepend to a scoped file.
at line 428
bool
append(string $path, string $data, string $separator = PHP_EOL)
Append to a scoped file.
at line 438
bool
delete(array|string $paths)
Delete scoped files.
at line 451
bool
copy(string $from, string $to)
Copy a scoped file to another scoped path.
at line 464
bool
move(string $from, string $to)
Move a scoped file to another scoped path.
at line 493
protected bool
transferToDisk(Filesystem|string|UnitEnum $disk, string $from, string|null $to, bool $move)
Transfer a file using one resolved source disk and prefix.
at line 516
int
size(string $path)
Get the size of a scoped file.
at line 526
false|string
checksum(string $path, array $options = [])
Get the checksum of a scoped file.
at line 536
false|string
mimeType(string $path)
Get the MIME type of a scoped file.
at line 546
int
lastModified(string $path)
Get the last modification time of a scoped file.
at line 558
mixed
readStream(string $path)
Get a stream for a scoped file.
at line 570
mixed
readStreamRange(string $path, int|null $start, int|null $end)
Get a partial stream for a scoped file.
at line 580
string
temporaryUrl(string $path, DateTimeInterface $expiration, array $options = [])
Get a temporary URL for a scoped file.
at line 590
array|string
temporaryUploadUrl(string $path, DateTimeInterface $expiration, array $options = [])
Get a temporary upload URL for a scoped file.
at line 603
bool
providesTemporaryUrls()
Determine if the inner disk provides temporary URLs.
at line 611
bool
providesTemporaryUploadUrls()
Determine if the inner disk provides temporary upload URLs.
at line 619
array
getConfig()
Get the inner disk configuration.
at line 627
array
files(string|null $directory = null, bool $recursive = false)
Get scoped files in a directory.
at line 641
array
allFiles(string|null $directory = null)
Get all scoped files in a directory recursively.
at line 652
array
directories(string|null $directory = null, bool $recursive = false)
Get scoped directories in a directory.
at line 666
array
allDirectories(string|null $directory = null)
Get all scoped directories in a directory recursively.
at line 677
bool
makeDirectory(string $path)
Create a scoped directory.
at line 687
bool
deleteDirectory(string $directory)
Delete a scoped directory recursively.
at line 697
never
getDriver()
Reject access to the inner Flysystem driver.
at line 705
never
getAdapter()
Reject access to the inner Flysystem adapter.
at line 713
never
getClient()
Reject access to the inner driver client.
at line 721
never
serveUsing(Closure|null $callback)
Reject mutation of the shared inner disk's serve callback.
at line 729
never
buildTemporaryUrlsUsing(Closure|null $callback)
Reject mutation of the shared inner disk's temporary URL callback.
at line 737
never
buildTemporaryUploadUrlsUsing(Closure|null $callback)
Reject mutation of the shared inner disk's temporary upload URL callback.
at line 745
never
__call(string $method, array $parameters)
Reject calls that have not been explicitly mapped through the prefix boundary.
at line 755
protected string
prefix()
Resolve and validate the prefix for one public operation.
at line 772
protected string
applyPrefix(string $prefix, string $path)
Apply a validated prefix to a normalized user path.
at line 782
protected string
stripPrefix(string $prefix, string $path)
Strip a validated prefix from an inner returned path.
at line 804
protected Filesystem
resolveDisk()
Resolve the inner filesystem for one public operation.
at line 814
protected mixed
call(string $method, array $arguments)
Forward one audited method to the inner disk.
at line 840
protected RuntimeException
unsupportedMutationOrInternal(string $method)
Create the exception for every rejected internal or shared-state mutator.