X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=doc%2FAddonStorageBackend.md;h=eaa58cd4d871606bde194b79c6dbb436f468d484;hb=259b99e6e94cd6714e65bb128af9cbe776fd3325;hp=f4773acb89b81376eb4c53984d36d65789d3c3b0;hpb=6f290607de7f10cea7429aacd0b394fd3f4c4e69;p=friendica.git diff --git a/doc/AddonStorageBackend.md b/doc/AddonStorageBackend.md index f4773acb89..eaa58cd4d8 100644 --- a/doc/AddonStorageBackend.md +++ b/doc/AddonStorageBackend.md @@ -4,7 +4,7 @@ Friendica Storage Backend Addon development * [Home](help) Storage backends can be added via addons. -A storage backend is implemented as a class, and the plugin register the class to make it avaiable to the system. +A storage backend is implemented as a class, and the plugin register the class to make it available to the system. ## The Storage Backend Class @@ -12,14 +12,14 @@ The class must live in `Friendica\Addon\youraddonname` namespace, where `youradd There are two different interfaces you need to implement. -### `IWritableStorage` +### `ICanWriteToStorage` -The class must implement `Friendica\Model\Storage\IWritableStorage` interface. All method in the interface must be implemented: +The class must implement `Friendica\Core\Storage\Capability\ICanWriteToStorage` interface. All method in the interface must be implemented: ```php -namespace Friendica\Model\Storage\IWritableStorage; +namespace Friendica\Core\Storage\Capability\ICanWriteToStorage; -interface IWritableStorage +interface ICanWriteToStorage { public function get(string $reference); public function put(string $data, string $reference = ''); @@ -33,17 +33,17 @@ interface IWritableStorage - `put(string $data, string $reference)` saves data in `$data` to position `$reference`, or a new position if `$reference` is empty. - `delete(string $reference)` delete data pointed by `$reference` -### `IStorageConfiguration` +### `ICanConfigureStorage` Each storage backend can have options the admin can set in admin page. -To make the options possible, you need to implement the `Friendica\Model\Storage\IStorageConfiguration` interface. +To make the options possible, you need to implement the `Friendica\Core\Storage\Capability\ICanConfigureStorage` interface. All methods in the interface must be implemented: ```php -namespace Friendica\Model\Storage\IStorageConfiguration; +namespace Friendica\Core\Storage\Capability\ICanConfigureStorage; -interface IStorageConfiguration +interface ICanConfigureStorage { public function getOptions(); public function saveOptions(array $data); @@ -108,7 +108,7 @@ When the plugin is uninstalled, registered backends must be unregistered using `DI::facStorage()->unregister(string $class)`. You have to register a new hook in your addon, listening on `storage_instance(App $a, array $data)`. -In case `$data['name']` is your storage class name, you have to instance a new instance of your `Friendica\Model\Storage\IStorage` class. +In case `$data['name']` is your storage class name, you have to instance a new instance of your `Friendica\Core\Storage\Capability\ICanReadFromStorage` class. Set the instance of your class as `$data['storage']` to pass it back to the backend. This is necessary because it isn't always clear, if you need further construction arguments. @@ -124,7 +124,7 @@ Add a new test class which's naming convention is `StorageClassTest`, which exte Override the two necessary instances: ```php -use Friendica\Model\Storage\IWritableStorage; +use Friendica\Core\Storage\Capability\ICanWriteToStorage; abstract class StorageTest { @@ -132,7 +132,7 @@ abstract class StorageTest abstract protected function getInstance(); // Assertion for the option array you return for your new StorageClass - abstract protected function assertOption(IWritableStorage $storage); + abstract protected function assertOption(ICanWriteToStorage $storage); } ``` @@ -156,16 +156,16 @@ If there's a predecessor to this exception (e.g. you caught an exception and are Example: ```php -use Friendica\Model\Storage\IWritableStorage; +use Friendica\Core\Storage\Capability\ICanWriteToStorage; -class ExampleStorage implements IWritableStorage +class ExampleStorage implements ICanWriteToStorage { public function get(string $reference) : string { try { throw new Exception('a real bad exception'); } catch (Exception $exception) { - throw new \Friendica\Model\Storage\StorageException(sprintf('The Example Storage throws an exception for reference %s', $reference), 500, $exception); + throw new \Friendica\Core\Storage\Exception\StorageException(sprintf('The Example Storage throws an exception for reference %s', $reference), 500, $exception); } } } @@ -186,12 +186,12 @@ The file will be `addon/samplestorage/SampleStorageBackend.php`: config = $config; $this->l10n = $l10n; @@ -357,8 +357,8 @@ function samplestorage_storage_config(App $a, array &$data) **Theoretically - until tests for Addons are enabled too - create a test class with the name `addon/tests/SampleStorageTest.php`: ```php -use Friendica\Model\Storage\IWritableStorage; -use Friendica\Test\src\Model\Storage\StorageTest; +use Friendica\Core\Storage\Capability\ICanWriteToStorage; +use Friendica\Test\src\Core\Storage\StorageTest; class SampleStorageTest extends StorageTest { @@ -371,7 +371,7 @@ class SampleStorageTest extends StorageTest } // Assertion for the option array you return for your new StorageClass - protected function assertOption(IWritableStorage $storage) + protected function assertOption(ICanWriteToStorage $storage) { $this->assertEquals([ 'filename' => [