The popphp/pop-storage is a storage wrapper component that provides interchangeable adapters to easily manage and switch between different storage resources, such as the local disk or a cloud-based storage platform, like AWS S3.


Install it directly into your project:

composer require popphp/pop-storage

Or, include it in your composer.json file:

    "require": {
        "popphp/pop-storage": "^1.0.0"

Basic Use

Setting up the Local adapter

$storage = new Pop\Storage\Local(__DIR__ . '/tmp/');

Setting up the S3 adapter

$storage = new Pop\Storage\S3($_ENV['AWS_BUCKET'], new S3\S3Client([
    'credentials' => [
        'key'    => $_ENV['AWS_KEY'],
        'secret' => $_ENV['AWS_SECRET'],
    'region'  => $_ENV['AWS_REGION'],
    'version' => $_ENV['AWS_VERSION']

Checking if a file exists

if ($storage->fileExists('test.txt')) {
    // File exists

Fetch contents of a file

$fileContents = $storage->fetchFile('test.txt');

Copy a file

$adapter->copyFile('test.txt', 'test2.txt');

Rename a file

$adapter->renameFile('test.txt', 'test1.txt');

Replace a file

$adapter->replaceFile('test1.txt', 'new contents');

Make a directory


Remove a directory