Skip to content

alesinicio/AbstractStorage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Abstract Storage

Storing and retrieving files with PHP is easy... right?

Yes, it is, until you find out that you were storing files in your local server and now needs to change that to Amazon S3, Google or whatever.

You hard-coded a lot of stuff in your code, and when you start to "rewire" stuff, everything starts to break. It hurts.

The objective of this repo is to create an interface for file storage. This allow us to separate the implementation for each storage provider and the actual code which just want to store/retrieve/delete a file.

The basic implementation for local storage and Amazon S3 are included.

Feel free to contribute, criticize, extend and use.

Terminology

Some storage providers use different terminology for stuff. It can lead to confusion, and there's no way around it except choosing what seems the "best fit" for everything.

We use the term bucket on the interface as a way to represent a logic place where files are stored. In Amazon S3, that is a native term. In local storage, bucket just means directory/folder.

Dependencies

The interface itself does not have any dependencies. However the Amazon S3 implementation does. I suggest to use Composer and get the "aws/aws-sdk-php" package. Everything should be there.

Examples

Basic general examples

//OBJECT CREATION/INITIALIZATION -- SHOULD BE IN YOUR DEPENDENCY INJECTOR CONTAINER
$storageObj = new LocalStorage();
$storageObj::setBaseStorageLocation('../storage');

//ARCHIVE A FILE
try {
	$fileUID = $storage->putFile('myfile.txt', 'mybucket');
} catch (Exception $e) {
	die($e->getMessage());
}

//DOWNLOAD A FILE
try {
	$storage->getFile($fileUID, 'output_name.txt', 'mybucket');
} catch (Exception $e) {
	die($e->getMessage());
}

About

Abstract file storage interface and simple implementations for LocalStorage and Amazon S3

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages