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.
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.
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 43
__construct(Filesystem|Closure $disk, Closure $prefixResolver, bool $allowRootPassthrough = false)
Create a dynamically scoped filesystem.
at line 54
ScopedFilesystemProxy
assertExists(array|string $path, string|null $content = null)
Assert that the given file or directory exists.
at line 68
ScopedFilesystemProxy
assertCount(string $path, int $count, bool $recursive = false)
Assert that the number of files in path equals the expected count.
at line 79
ScopedFilesystemProxy
assertMissing(array|string $path)
Assert that the given file or directory does not exist.
at line 93
ScopedFilesystemProxy
assertDirectoryEmpty(string $path)
Assert that the given directory is empty.
at line 104
ScopedFilesystemProxy
assertEmpty()
Assert that the scoped disk contains no files.
at line 115
string
path(string $path)
Get the full path to a scoped file.
at line 125
bool
has(string $location)
Determine if a scoped path exists using the Flysystem operator.
at line 135
string
read(string $location)
Read a scoped file using the Flysystem operator.
at line 145
int
fileSize(string $path)
Get a scoped file size using the Flysystem operator.
at line 155
string
visibility(string $path)
Get raw Flysystem visibility for a scoped path.
at line 165
void
write(string $location, string $contents, array $config = [])
Write a scoped file using the Flysystem operator.
at line 174
void
createDirectory(string $location, array $config = [])
Create a scoped directory using the Flysystem operator.
at line 183
bool
exists(string $path)
Determine if a scoped file or directory exists.
at line 193
bool
missing(string $path)
Determine if a scoped file or directory is missing.
at line 203
bool
fileExists(string $path)
Determine if a scoped file exists.
at line 213
bool
fileMissing(string $path)
Determine if a scoped file is missing.
at line 223
bool
directoryExists(string $path)
Determine if a scoped directory exists.
at line 233
bool
directoryMissing(string $path)
Determine if a scoped directory is missing.
at line 243
string|null
get(string $path)
Get the contents of a scoped file.
at line 253
array|bool|float|int|string|null
json(string $path, int $flags = 0)
Get the contents of a scoped file as decoded JSON.
at line 263
StreamedResponse
response(string $path, string|null $name = null, array $headers = [], string $disposition = 'inline')
Create a streamed response for a scoped file.
at line 282
Response
serve(Request $request, string $path, string|null $name = null, array $headers = [])
Create a streamed response for serving a scoped file.
at line 297
StreamedResponse
download(string $path, string|null $name = null, array $headers = [])
Create a streamed download response for a scoped file.
at line 307
bool|string
put(string $path, mixed $contents, mixed $options = [])
Write the contents of a scoped file.
at line 318
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 337
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 363
bool
writeStream(string $path, mixed $resource, array $options = [])
Write a scoped file using a stream.
at line 373
string
getVisibility(string $path)
Get the visibility for a scoped path.
at line 383
bool
setVisibility(string $path, string $visibility)
Set the visibility for a scoped path.
at line 393
bool
prepend(string $path, string $data, string $separator = PHP_EOL)
Prepend to a scoped file.
at line 403
bool
append(string $path, string $data, string $separator = PHP_EOL)
Append to a scoped file.
at line 413
bool
delete(array|string $paths)
Delete scoped files.
at line 426
bool
copy(string $from, string $to)
Copy a scoped file to another scoped path.
at line 439
bool
move(string $from, string $to)
Move a scoped file to another scoped path.
at line 452
int
size(string $path)
Get the size of a scoped file.
at line 462
false|string
checksum(string $path, array $options = [])
Get the checksum of a scoped file.
at line 472
false|string
mimeType(string $path)
Get the MIME type of a scoped file.
at line 482
int
lastModified(string $path)
Get the last modification time of a scoped file.
at line 494
mixed
readStream(string $path)
Get a stream for a scoped file.
at line 506
mixed
readStreamRange(string $path, int|null $start, int|null $end)
Get a partial stream for a scoped file.
at line 516
string
temporaryUrl(string $path, DateTimeInterface $expiration, array $options = [])
Get a temporary URL for a scoped file.
at line 526
array|string
temporaryUploadUrl(string $path, DateTimeInterface $expiration, array $options = [])
Get a temporary upload URL for a scoped file.
at line 539
bool
providesTemporaryUrls()
Determine if the inner disk provides temporary URLs.
at line 547
bool
providesTemporaryUploadUrls()
Determine if the inner disk provides temporary upload URLs.
at line 555
array
getConfig()
Get the inner disk configuration.
at line 563
array
files(string|null $directory = null, bool $recursive = false)
Get scoped files in a directory.
at line 577
array
allFiles(string|null $directory = null)
Get all scoped files in a directory recursively.
at line 588
array
directories(string|null $directory = null, bool $recursive = false)
Get scoped directories in a directory.
at line 602
array
allDirectories(string|null $directory = null)
Get all scoped directories in a directory recursively.
at line 613
bool
makeDirectory(string $path)
Create a scoped directory.
at line 623
bool
deleteDirectory(string $directory)
Delete a scoped directory recursively.
at line 633
never
getDriver()
Reject access to the inner Flysystem driver.
at line 641
never
getAdapter()
Reject access to the inner Flysystem adapter.
at line 649
never
getClient()
Reject access to the inner driver client.
at line 657
never
serveUsing(Closure|null $callback)
Reject mutation of the shared inner disk's serve callback.
at line 665
never
buildTemporaryUrlsUsing(Closure|null $callback)
Reject mutation of the shared inner disk's temporary URL callback.
at line 673
never
buildTemporaryUploadUrlsUsing(Closure|null $callback)
Reject mutation of the shared inner disk's temporary upload URL callback.
at line 681
never
__call(string $method, array $parameters)
Reject calls that have not been explicitly mapped through the prefix boundary.
at line 691
protected string
prefix()
Resolve and validate the prefix for one public operation.
at line 708
protected string
applyPrefix(string $prefix, string $path)
Apply a validated prefix to a normalized user path.
at line 718
protected string
stripPrefix(string $prefix, string $path)
Strip a validated prefix from an inner returned path.
at line 740
protected Filesystem
resolveDisk()
Resolve the inner filesystem for one public operation.
at line 750
protected mixed
call(string $method, array $arguments)
Forward one audited method to the inner disk.
at line 776
protected RuntimeException
unsupportedMutationOrInternal(string $method)
Create the exception for every rejected internal or shared-state mutator.