phossa2 / storage
A storage front for local or remote storage system
Installs: 143
Dependents: 2
Suggesters: 1
Security: 0
Stars: 2
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/phossa2/storage
Requires
- php: ~5.4|~7.0
 - phossa2/shared: ^2.0.23
 
Requires (Dev)
- phpunit/phpunit: 4.*
 
Provides
- psr/log-implementation: 1.0.0
 
This package is not auto-updated.
Last update: 2025-10-26 07:14:54 UTC
README
phossa2/storage is a PHP storage library with support for local or cloud storage.
It requires PHP 5.4, supports PHP 7.0+ and HHVM. It is compliant with PSR-1, PSR-2, PSR-3, PSR-4, and the proposed PSR-5.
Installation
Install via the composer utility.
composer require "phossa2/storage"
or add the following lines to your composer.json
{
    "require": {
       "phossa2/storage": "2.*"
    }
}
Introduction
- 
Simple restful like APIs.
 - 
Unified path syntax like
/local/img/avatar.jpgfor all systems. - 
Mounting and umounting
filesystem. - 
Support for different drivers.
 - 
Support for stream.
 
Usage
Create the storage instance,
use Phossa2\Storage\Storage; use Phossa2\Storage\Filesystem; use Phossa2\Storage\Driver\LocalDriver; // mount local dir '/www/storage' to '/local' $storage = new Storage( '/local', new Filesystem('/www/storage') ); // add a file $filename = '/local/newfile.txt'; $storage->put($filename, 'this is the content'); // check existens if ($storage->has($filename)) { // read file content $str = $storage->get($filename); // delete the file $storage->del($filename); } // mount another filesystem $storage->mount('/aws', new Filesystem(new AwsDriver()));
Features
- 
Support for simple and instinctive APIs like
get(),put(),has()anddel()etc.Others APIs like
- 
meta()Get the meta data of the file
// get the meta data if ($storage->has($file)) { $meta = $storage->meta($file); } // update meta data $new = ['mtime' => time()]; $storage->put($file, null, $new);
 - 
copy()andmove()Copy or move files in or between filesystems
// move to another name $storage->move('/local/README.txt', '/local/README.bak.txt'); // copy into another filesystem's directory $storage->copy('/local/README.txt', '/aws/www/');
 
 - 
 - 
Uses unified path syntax like `/local/dir/file.txt' for all systems including windows. The underlying driver is responsible for translating path transparently.
$storage = new Storage( '/disk/d', new Filesystem(new LocalDriver('D:\\\\')) ); $storage->put('/disk/d/temp/newfile.txt', 'this is content');
 - 
Mounting and umounting filesystems
filesytemis a wrapper of different drivers with permissions. User may mount a read only filesystem as follows,// mount as readonly, default is Filesystem::PERM_ALL $storage->mount( '/readonly', new Filesystem( '/home/www/public', Filesystem::PERM_READ ) ); // will fail $storage->put('/readonly/newfile.txt', 'this is the content');
Different filesystem may use same driver,
$driver = new LocalDriver('/home/www/public'); // writable $storage->mount('/public', new Filesystem($driver)); // readonly $storage->mount('/readonly', new Filesystem($driver, Filesystem::PERM_READ));
Filesystems may overlapping on top of others,
// mount root $storage->mount('/', new Filesystem(...)); // mount var $storage->mount('/var', new Filesystem(...)); // mount cache $storage->mount('/var/cache', new Filesystem(...));
 - 
Support for different drivers inlucing local or cloud storage.
 - 
Write and read streams as follows,
// read stream $stream = $storage->get('/local/thefile.txt', true); // write with stream $storage->put('/local/anotherfile.txt', $stream); // close it if (is_resource($stream)) { fclose($stream); }
 
APIs
- 
- 
bool has(string $path)check
$pathexistens. - 
null|string|array|resource get(string $path, bool $getAsStream)Get content of the
$path.- 
If not found or failure, returns
NULL. - 
If
$pathis a directory, returns an array of the full paths of the files under this$path. - 
If
$getAsStreamistrue, returns a stream handler. 
 - 
 - 
bool put(string $path, string|resource|null $content, array $meta = [])Set the content or meta data of the
$path. - 
bool del(string $path)Remove the
$path. If$pathis a directory, will remove all files under this path and the path itself (unless it is a mount point). - 
bool copy(string $from, string $to)andbool copy(string $from, string $to)Copy or move
$fromto$to. - 
array meta(string $path)Get the meta data of
$path. If not found or error, returns[]. - 
Phossa2\Storage\Path path(string $path)Returns a
Phossa2\Storage\Pathobject 
 - 
 - 
- 
bool hasError()Has error ?
 - 
string getError()Get previous error message. If no error, returns
''.if (!$storage->copy('/local/from.txt', '/local/to.txt')) { $err = $storage->getError(); }
 - 
string getErrorCode()Get a numeric string of the error code.
 
 - 
 
Change log
Please see CHANGELOG from more information.
Contributing
Please see CONTRIBUTE for more information.
Dependencies
- 
PHP >= 5.4.0
 - 
phossa2/shared >= 2.0.23