decodelabs/lucid-support

Support Lucid sanitisation in your libraries without the dependencies

v0.3.0 2023-10-18 11:09 UTC

This package is auto-updated.

Last update: 2024-04-06 23:32:28 UTC


README

PHP from Packagist Latest Version Total Downloads GitHub Workflow Status PHPStan License

Support Lucid sanitisation in your libraries without the dependencies

Lucid-support is a middleware package that allows third party libraries to implement the necessary interfaces and provide custom sanitiser and validator functionality to Lucid without dragging in the full dependency tree of the main library.

Get news and updates on the DecodeLabs blog.

Installation

Install the library via composer:

composer require decodelabs/lucid-support

Usage

Lucid provides interfaces and traits to implement providing input sanitisation from your own value container objects.

The main library however has a substantial dependency list which may not be desirable when deploying the Lucid Provider interfaces in your own libraries.

Instead, those interfaces have been sectioned off in this package with a class_exists() check to ensure that Lucid is available at runtime.

If you want to provide Lucid's sanitisation interface in a library, you only need to require this package, and implement either DirectContextProvider (for passing the value directly to the methods), MultiContextProvider (for dictionaries and maps) or SingleContextProvider (for single-value objects).

For example:

namespace My\Library;

use DecodeLabs\Lucid\Provider\SingleContext;
use DecodeLabs\Lucid\Provider\SingleContextTrait;

class MyClass implements SingleContext {

    use SingleContextTrait;

    protected mixed $value;

    public function __construct(mixed $value) {
        $this->value = $value;
    }

    /**
     * This method provides the value to all other
     * sanitisation methods in the interface
     */
    public function getValue(): mixed {
        return $this->value;
    }
}

Licensing

Lucid Support is licensed under the MIT License. See LICENSE for the full license text.