1. Go to this page and download the library: Download elazar/flystream library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
elazar / flystream example snippets
/**
* 1. Configure your Flysystem filesystem to use the Flystream path
* normalizer; see the "Path Normalization" section of this README for
* more details.
*/
use Elazar\Flystream\ServiceLocator;
use League\Flysystem\Filesystem;
use League\Flysystem\InMemory\InMemoryFilesystemAdapter;
use League\Flysystem\PathNormalizer;
$adapter = new InMemoryFilesystemAdapter;
$config = [ /* ... */ ];
$pathNormalizer = ServiceLocator::get(PathNormalizer::class);
$filesystem = new Filesystem($adapter, $config, $pathNormalizer);
/**
* 2. Register the filesystem with Flystream and associate it with a
* custom protocol (e.g. 'mem').
*/
use Elazar\Flystream\FilesystemRegistry;
$registry = ServiceLocator::get(FilesystemRegistry::class);
$registry->register('mem', $filesystem);
/**
* 3. Interact with the filesystem using the custom protocol.
*/
mkdir('mem://foo');
$file = fopen('mem://foo/bar', 'w');
fwrite($file, 'baz');
fclose($file);
file_put_contents('mem://foo/bar', 'bay');
$contents = file_get_contents('mem://foo/bar');
// or
$contents = stream_get_contents(fopen('mem://foo/bar', 'r'));
if (file_exists('mem://foo/bar')) {
rename('mem://foo/bar', 'mem://foo/baz');
touch('mem://foo/bar');
}
$file = fopen('mem://foo/baz', 'r');
fseek($file, 2);
$position = ftell($file);
ftruncate($file, 0);
fclose($file);
$dir = opendir('mem://foo');
while (($entry = readdir($dir)) !== false) {
echo $entry, PHP_EOL;
}
closedir($dir);
unlink('mem://foo/bar');
unlink('mem://foo/baz');
rmdir('mem://foo');
// These won't have any effect because Flysystem doesn't support them.
chmod('mem://foo', 0755);
chown('mem://foo', 'root');
chgrp('mem://foo', 'root');
/**
* 4. Optionally, unregister the filesystem with Flystream.
*/
$registry->unregister('mem');
use Elazar\Flystream\ServiceLocator;
use League\Flysystem\Filesystem;
use League\Flysystem\PathNormalizer;
// $adapter = ...
// $config = ...
$normalizer = ServiceLocator::get(PathNormalizer::class);
$filesystem = new Filesystem($adapter, $config, $normalizer);
use Elazar\Flystream\ServiceLocator;
use Elazar\Flystream\StripProtocolPathNormalizer;
// To remove a single protocol, specify it as a string
$pathNormalizer = new StripProtocolPathNormalizer('foo');
// To remove more than one protocol, specify them as an array of strings
$pathNormalizer = new StripProtocolPathNormalizer(['foo', 'bar']);
ServiceLocator::set(PathNormalizer::class, $pathNormalizer);
use Elazar\Flystream\PassThruPathNormalizer;
use League\Flysystem\PathNormalizer;
use Elazar\Flystream\ServiceLocator;
use Elazar\Flystream\StripProtocolPathNormalizer;
ServiceLocator::set(PathNormalizer::class, new StripProtocolPathNormalizer(
// This is the default and results in the removal of all protocols
null,
// This normalizer returns the given path unchanged
new PassThruPathNormalizer
));
use Elazar\Flystream\PassThruPathNormalizer;
use League\Flysystem\PathNormalizer;
use Elazar\Flystream\ServiceLocator;
ServiceLocator::set(PathNormalizer::class, new PassThruPathNormalizer);
use Elazar\Flystream\BufferInterface;
use Elazar\Flystream\ServiceLocator;
// To use the File strategy:
use Elazar\Flystream\FileBuffer;
ServiceLocator::set(BufferInterface::class, FileBuffer::class);
// To use the Overflow configuration with a default memory cap of 2 MB:
use Elazar\Flystream\OverflowBuffer;
ServiceLocator::set(BufferInterface::class, OverflowBuffer::class);
// To use the Overflow configuration with a custom memory cap:
// @var int Memory limit in bytes (2 MB in this example)
$maxMemory = 2 * 1024**2;
$buffer = new OverflowBuffer;
$buffer->setMaxMemory($maxMemory);
ServiceLocator::set(BufferInterface::class, $buffer);
use Elazar\Flystream\ServiceLocator;
use League\Flysystem\UnixVisibility\PortableVisibilityConverter;
use League\Flysystem\UnixVisibility\VisibilityConverter;
ServiceLocator::set(VisibilityConverter::class, new PortableVisibilityConverter(
// ...
));
use Elazar\Flystream\ServiceLocator;
use League\Flysystem\UnixVisibility\VisibilityConverter;
use My\CustomVisibilityConverter;
// If your implementation doesn't lityConverter::class, new CustomVisibilityConverter(
// ...
));
use Elazar\Flystream\LockRegistryInterface;
use Elazar\Flystream\PermissiveLockRegistry;
use Elazar\Flystream\ServiceLocator;
ServiceLocator::set(
LockRegistryInterface::class,
PermissiveLockRegistry::class
);
namespace My;
use Elazar\Flystream\Lock;
use Elazar\Flystream\LockRegistryInterface;
class CustomLockRegistry implements LockRegistryInterface
{
public function acquire(Lock $lock): bool
{
// ...
}
public function release(Lock $lock): bool
{
// ...
}
}
use Elazar\Flystream\LockRegistryInterface;
use Elazar\Flystream\ServiceLocator;
use My\CustomLockRegistry;
// If your implementation doesn't erviceLocator::set(
LockRegistryInterface::class,
new CustomLockRegistry(
// ...
)
);
use Elazar\Flystream\ServiceLocator;
use Monolog\Logger;
use Psr\Log\LoggerInterface;
$logger = new Logger;
// configure $logger here
ServiceLocator::set(LoggerInterface::class, $logger);
use Elazar\Flystream\BufferInterface;
use Elazar\Flystream\LoggingCompositeBuffer;
use Elazar\Flystream\MemoryBuffer;
use Elazar\Flystream\ServiceLocator;
use Monolog\Logger;
use Psr\Log\LoggerInterface;
$logger = new Logger;
// configure $logger here
$buffer = new LoggingCompositeBuffer(new MemoryBuffer, $logger);
ServiceLocator::set(BufferInterface::class, $buffer);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.