...
Das Paket verfügt über zwei Tabellen, welche die Speichertypen der verschiedenen Verzeichnisse definieren. Dabei werden von brandbox vordefinierte Volumen an Adapter verknüpft. Ein Adapter gibt vor, welches Unterverzeichnis welchem Speichertyp zugewiesen ist. Diese Verknüpfung von Volumen und Adaptern kann von der Volumenkonfiguration übersteuert werden. In manchen Fällen (bspw. Temporärverzeichnissen) ist es nicht sinnvoll sie anders als lokal zu speichern. Standardmäßig stehen zwei Speichertypen zur Verfügung: lokal und S3.
Drawio | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
So kann bspw. für das Volumen share ein Adapter für das Verzeichnis public erstellt werden, welcher den Speichertyp S3 definiert.
...
Um einen S3-Speicher nutzen zu können, müssen diverse Informationen bereitgestellt werden. Diese Informationen werden nicht in der Datenbank abgelegt oder über die UI konfiguriert. Sie müssen wie folgt in der config.php definiert werden.
S3 Konfiguration
Codeblock | ||||||
---|---|---|---|---|---|---|
| ||||||
's3' => [ 'is_active' => true, 'use_path_style_endpoint' => true, 'endpoint' => 'endpointWithProtocol', 'region' => 'us-east-1', 'bucket' => 'brandbox-test', 'credentials' => [ 'key' => 'EXAMPLEKEY', 'secret' => 'EXAMPLESECRET' ], 'http' => [ 'verify' => false, 'timeout' => 60 ] ] |
...
Eine zentrale Klasse von Framework\Storage ist die Setup-Klasse (\Brandbox\FrameworkStorage\Framework\Storage\Lib\Execute\Setup). Diese Klasse ist ein Singleton und sollte über die get-Methode instanziiert werden. Über den Konstruktor wird der MountManager erstellt, welcher über Events erweitert werden kann. Diese Klasse bietet außerdem eine Methode an, welches einen Pfad so Präfixt, dass dieser Pfad einer Operator-Instanz von Flysystem übergeben werden kann.
Die von framework-storage bereitgestellten Methoden zur Interaktion mit Dateien und Ordnern folgen alle einem ähnlichen Schema. Die Setup-Klasse wird instanziiert, dem Pfad wird ein Präfix verliehen, die Operator-Instanz wird aus der Setup-Klasse bezogen und letztlich wird die konkrete Methode im Operator angesprochen. Hier beispielhaft die Kopier-Methode für Dateien.
...
...
Framework\Storage - CopyFile
Codeblock | ||
---|---|---|
| ||
public function execute(string $source, string $destination, array $config = []): void { $setup = Storage\Lib\Execute\Setup::get(); $operatorWrapper = $setup->getWrapper(); $source = $setup->prefixPath($source); $destination = $setup->prefixPath($destination); $operatorWrapper->copy($source, $destination, $config); } |
...
Um in das Vorgehen von framework-storage einzugreifen, stehen folgende Events zur Verfügung.
Event | Beschreibung |
---|---|
\Brandbox\FrameworkStorage\Framework\Storage\Lib\Event\OnPrefixPath | Dieses Event bietet die Möglichkeit einem Pfad ein Präfix zu verabreichen. Neben dem Pfad wird der ermittelte Speichertyp bereitgestellt. |
\Brandbox\FrameworkStorage\Framework\Storage\Lib\Event\OnPopulateMounts | Dieses Event ermöglicht es weitere Mounts hinzuzufügen. Das dafür vorgesehene Array ist assoziativ. Jeder neue Eintrag muss den Speichertyp als key erhalten. Der value entspricht der bereitzustellenden \League\Flysystem\FilesystemOperator -Instanz. Das Array wird im Anschluss dem MountManager von Flysystem übergeben. |