/laravel-flysystem-others

Registers recognized third-party Flysystem adapters with Laravel automatically.

Primary LanguagePHPMIT LicenseMIT

Laravel Flysystem Others

Software License Gitter Liberapay receiving

Latest Stable Version Latest Unstable Version Build Status Codecov Total Downloads

Registers recognized third-party Flysystem adapters with Laravel automatically.

This lets you use third-party adapters without having to write your own service providers to load them properly. It automatically detects which adapters are available, and registers only the ones actually installed. It also detects whether the Eventable version of Flysystem is available, and if so, it switches to it, letting you listen in on Flysystem events and affect them accordingly.

NOTE: While this package only recognizes adapters NOT officially supported by The PHP League, it does depend on danhunsaker/laravel-flysystem-service, so installing this package will let you use them as well.

Installation

The usual methods for using Composer apply here:

composer require danhunsaker/laravel-flysystem-others

This package uses Laravel's auto-discovery feature for the service provider, but if you're using a Laravel version before 5.5, you do still have to register one service – but only one, and at least you don't have to write it. Be sure to REPLACE the Illuminate\Filesystem\FilesystemServiceProvider::class line with the new one:

// In config/app.php

    'providers' => [
        // ...
        Danhunsaker\Laravel\Flysystem\FlysystemOtherServiceProvider::class,
        // ...
    ],

And since FlysystemOtherServiceProvider extends FlysystemServiceProvider from danhunsaker/laravel-flysystem-service, you don't need to add it as well. In fact, doing so will probably cause some issues with your app, as both providers will attempt to handle the PHP League drivers at the same time.

Of course, you'll want to read through its README as well, to see what options it supports that this package piggy-backs on, such as those for the cache decorator.

Setup

For added flexibility, such as the ability to open ZIP files on remote storage, you can also install twistor/flysystem-stream-wrapper, which will register each of the drives in your config/filesystems.php file as a stream protocol (though only when each is accessed the first time, unless you add them to the autowrap parameter in the configuration). In the example of accessing remote ZIP files, you would then simply need to prefix the ZIP file's path with the name of the drive it's available on, as a URL scheme (something like dropbox://path/to/file.zip).

Finally, as with danhunsaker/laravel-flysystem-service, you can get example definitions for all supported filesystem drivers by publishing the replacement filesystems config - just run the following Artisan command:

php artisan vendor:publish --provider=Danhunsaker\\Laravel\\Flysystem\\FlysystemOtherServiceProvider --force

The --force flag is required to overwrite the existing filesystems config that ships with Laravel. You can also rename the existing file, then run the command without the --force flag, if you'd like to preserve the existing contents for transfer to the new file.

Supported Adapters

The best place to check for which adapters are supported by this package is the Composer suggestions, but here's a quick (not-guaranteed-up-to-date) list as well:

NOTE: If you install more than one of the adapters listed above for the same storage service, only the first one – in alphabetical order by namespace – will be used, unless otherwise noted above.

Contributions

Pull requests, bug reports, and so forth are all welcome on GitHub.

Security issues should be reported directly to danhunsaker (plus) laraflyplus (at) gmail (dot) com.

And head to GitHub for everything else.