From 64a36970d6c4a90c1ab738e0b859b4fffa18c603 Mon Sep 17 00:00:00 2001 From: wn_ Date: Thu, 21 Nov 2024 17:27:15 +0000 Subject: Bump 'chillerlan/php-qrcode' to 5.0.x. * Maintains PHP `7.4` compatibility and adds PHP `8.4` compatibility * The `4.4.x` branch does the same, but I didn't see any reason not to go to `5.0.x`. * https://github.com/chillerlan/php-qrcode/releases --- .../php-settings-container/.github/FUNDING.yml | 2 - .../.github/workflows/tests.yml | 105 ------------------- .../chillerlan/php-settings-container/.gitignore | 4 - .../php-settings-container/.phan/config.php | 54 ---------- .../php-settings-container/.scrutinizer.yml | 14 --- vendor/chillerlan/php-settings-container/README.md | 99 ++++++++++-------- .../php-settings-container/composer.json | 20 ++-- .../php-settings-container/docs/Readme.md | 13 --- .../php-settings-container/examples/advanced.php | 51 --------- .../php-settings-container/examples/simple.php | 29 ------ .../chillerlan/php-settings-container/phpdoc.xml | 20 ---- .../chillerlan/php-settings-container/phpunit.xml | 26 ----- .../php-settings-container/rules-magic-access.neon | 4 + .../src/SettingsContainerAbstract.php | 114 +++++++++++++++++--- .../src/SettingsContainerInterface.php | 34 ++++-- .../php-settings-container/tests/ContainerTest.php | 115 --------------------- .../php-settings-container/tests/TestContainer.php | 27 ----- .../tests/TestOptionsTrait.php | 42 -------- 18 files changed, 195 insertions(+), 578 deletions(-) delete mode 100644 vendor/chillerlan/php-settings-container/.github/FUNDING.yml delete mode 100644 vendor/chillerlan/php-settings-container/.github/workflows/tests.yml delete mode 100644 vendor/chillerlan/php-settings-container/.gitignore delete mode 100644 vendor/chillerlan/php-settings-container/.phan/config.php delete mode 100644 vendor/chillerlan/php-settings-container/.scrutinizer.yml delete mode 100644 vendor/chillerlan/php-settings-container/docs/Readme.md delete mode 100644 vendor/chillerlan/php-settings-container/examples/advanced.php delete mode 100644 vendor/chillerlan/php-settings-container/examples/simple.php delete mode 100644 vendor/chillerlan/php-settings-container/phpdoc.xml delete mode 100644 vendor/chillerlan/php-settings-container/phpunit.xml create mode 100644 vendor/chillerlan/php-settings-container/rules-magic-access.neon delete mode 100644 vendor/chillerlan/php-settings-container/tests/ContainerTest.php delete mode 100644 vendor/chillerlan/php-settings-container/tests/TestContainer.php delete mode 100644 vendor/chillerlan/php-settings-container/tests/TestOptionsTrait.php (limited to 'vendor/chillerlan/php-settings-container') diff --git a/vendor/chillerlan/php-settings-container/.github/FUNDING.yml b/vendor/chillerlan/php-settings-container/.github/FUNDING.yml deleted file mode 100644 index 16a077f52..000000000 --- a/vendor/chillerlan/php-settings-container/.github/FUNDING.yml +++ /dev/null @@ -1,2 +0,0 @@ -ko_fi: codemasher -custom: "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4" diff --git a/vendor/chillerlan/php-settings-container/.github/workflows/tests.yml b/vendor/chillerlan/php-settings-container/.github/workflows/tests.yml deleted file mode 100644 index 8f108f0dd..000000000 --- a/vendor/chillerlan/php-settings-container/.github/workflows/tests.yml +++ /dev/null @@ -1,105 +0,0 @@ -# https://help.github.com/en/categories/automating-your-workflow-with-github-actions -# https://github.com/sebastianbergmann/phpunit/blob/master/.github/workflows/ci.yml - -on: - push: - branches: - - main - pull_request: - branches: - - main - - -name: "CI" - -jobs: - - static-code-analysis: - name: "Static Code Analysis" - - runs-on: ubuntu-latest - - env: - PHAN_ALLOW_XDEBUG: 0 - PHAN_DISABLE_XDEBUG_WARN: 1 - - steps: - - name: "Checkout" - uses: actions/checkout@v3 - - - name: "Install PHP" - uses: shivammathur/setup-php@v2 - with: - php-version: "7.4" - tools: pecl - coverage: none - extensions: ast, json - - - name: "Update dependencies with composer" - run: composer update --no-interaction --no-ansi --no-progress --no-suggest - - - name: "Run phan" - run: php vendor/bin/phan - - build-docs: - name: "Build and publish Docs" - - runs-on: ubuntu-latest - - steps: - - name: "Checkout sources" - uses: actions/checkout@v3 - - - name: "Install PHP" - uses: shivammathur/setup-php@v2 - with: - php-version: "8.1" - coverage: none - tools: phpDocumentor - extensions: json - - - name: "Build Docs" - run: phpdoc --config=phpdoc.xml - - - name: "Publish Docs to gh-pages" - uses: JamesIves/github-pages-deploy-action@v4.3.4 - with: - branch: gh-pages - folder: docs - clean: true - - tests: - name: "Unit Tests" - - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - os: - - ubuntu-latest - - windows-latest - php-version: - - "7.4" - - "8.0" - - "8.1" - - steps: - - name: "Checkout" - uses: actions/checkout@v3 - - - name: "Install PHP with extensions" - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - coverage: pcov - extensions: json - - - name: "Install dependencies with composer" - run: composer update --no-ansi --no-interaction --no-progress --no-suggest - - - name: "Run tests with phpunit" - run: php vendor/phpunit/phpunit/phpunit --configuration=phpunit.xml - - - name: "Send code coverage report to Codecov.io" - uses: codecov/codecov-action@v3 diff --git a/vendor/chillerlan/php-settings-container/.gitignore b/vendor/chillerlan/php-settings-container/.gitignore deleted file mode 100644 index 142dd453a..000000000 --- a/vendor/chillerlan/php-settings-container/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/.build -/.idea -/vendor -composer.lock diff --git a/vendor/chillerlan/php-settings-container/.phan/config.php b/vendor/chillerlan/php-settings-container/.phan/config.php deleted file mode 100644 index 468bd9983..000000000 --- a/vendor/chillerlan/php-settings-container/.phan/config.php +++ /dev/null @@ -1,54 +0,0 @@ - '7.4', - - // A list of directories that should be parsed for class and - // method information. After excluding the directories - // defined in exclude_analysis_directory_list, the remaining - // files will be statically analyzed for errors. - // - // Thus, both first-party and third-party code being used by - // your application should be included in this list. - 'directory_list' => [ - 'examples', - 'src', - 'tests', - 'vendor', - ], - - // A regex used to match every file name that you want to - // exclude from parsing. Actual value will exclude every - // "test", "tests", "Test" and "Tests" folders found in - // "vendor/" directory. - 'exclude_file_regex' => '@^vendor/.*/(tests?|Tests?)/@', - - // A directory list that defines files that will be excluded - // from static analysis, but whose class and method - // information should be included. - // - // Generally, you'll want to include the directories for - // third-party code (such as "vendor/") in this list. - // - // n.b.: If you'd like to parse but not analyze 3rd - // party code, directories containing that code - // should be added to both the `directory_list` - // and `exclude_analysis_directory_list` arrays. - 'exclude_analysis_directory_list' => [ - 'tests', - 'vendor', - ], -]; diff --git a/vendor/chillerlan/php-settings-container/.scrutinizer.yml b/vendor/chillerlan/php-settings-container/.scrutinizer.yml deleted file mode 100644 index daeb475f4..000000000 --- a/vendor/chillerlan/php-settings-container/.scrutinizer.yml +++ /dev/null @@ -1,14 +0,0 @@ -build: - nodes: - analysis: - tests: - override: - - php-scrutinizer-run - environment: - php: 8.0.0 - -filter: - excluded_paths: - - examples/* - - tests/* - - vendor/* diff --git a/vendor/chillerlan/php-settings-container/README.md b/vendor/chillerlan/php-settings-container/README.md index 579696b6e..3fb122d14 100644 --- a/vendor/chillerlan/php-settings-container/README.md +++ b/vendor/chillerlan/php-settings-container/README.md @@ -1,15 +1,15 @@ # chillerlan/php-settings-container -A container class for immutable settings objects. Not a DI container. PHP 7.4+ -- [`SettingsContainerInterface`](https://github.com/chillerlan/php-settings-container/blob/main/src/SettingsContainerInterface.php) provides immutable properties with magic getter & setter and some fancy - decouple configuration logic from your application! +A container class for settings objects - decouple configuration logic from your application! Not a DI container. +- [`SettingsContainerInterface`](https://github.com/chillerlan/php-settings-container/blob/main/src/SettingsContainerInterface.php) provides immutable properties with magic getter & setter and some fancy. [![PHP Version Support][php-badge]][php] [![version][packagist-badge]][packagist] [![license][license-badge]][license] +[![Continuous Integration][gh-action-badge]][gh-action] [![Coverage][coverage-badge]][coverage] -[![Scrunitizer][scrutinizer-badge]][scrutinizer] +[![Codacy][codacy-badge]][codacy] [![Packagist downloads][downloads-badge]][downloads] -[![Continuous Integration][gh-action-badge]][gh-action] [php-badge]: https://img.shields.io/packagist/php-v/chillerlan/php-settings-container?logo=php&color=8892BF [php]: https://www.php.net/supported-versions.php @@ -19,23 +19,23 @@ A container class for immutable settings objects. Not a DI container. PHP 7.4+ [license]: https://github.com/chillerlan/php-settings-container/blob/main/LICENSE [coverage-badge]: https://img.shields.io/codecov/c/github/chillerlan/php-settings-container.svg?logo=codecov [coverage]: https://codecov.io/github/chillerlan/php-settings-container -[scrutinizer-badge]: https://img.shields.io/scrutinizer/g/chillerlan/php-settings-container.svg?logo=scrutinizer -[scrutinizer]: https://scrutinizer-ci.com/g/chillerlan/php-settings-container +[codacy-badge]: https://img.shields.io/codacy/grade/bd2467799e2943d2853ce3ebad5af490/main?logo=codacy +[codacy]: https://www.codacy.com/gh/chillerlan/php-settings-container/dashboard?branch=main [downloads-badge]: https://img.shields.io/packagist/dt/chillerlan/php-settings-container.svg?logo=packagist [downloads]: https://packagist.org/packages/chillerlan/php-settings-container/stats -[gh-action-badge]: https://github.com/chillerlan/php-settings-container/workflows/CI/badge.svg -[gh-action]: https://github.com/chillerlan/php-settings-container/actions?query=workflow%3A%22CI%22 +[gh-action-badge]: https://img.shields.io/github/actions/workflow/status/chillerlan/php-settings-container/ci.yml?branch=main&logo=github +[gh-action]: https://github.com/chillerlan/php-settings-container/actions/workflows/ci.yml?query=branch%3Amain ## Documentation ### Installation **requires [composer](https://getcomposer.org)** -*composer.json* (note: replace `dev-main` with a [version constraint](https://getcomposer.org/doc/articles/versions.md#writing-version-constraints), e.g. `^2.1` - see [releases](https://github.com/chillerlan/php-settings-container/releases) for valid versions) +*composer.json* (note: replace `dev-main` with a [version constraint](https://getcomposer.org/doc/articles/versions.md#writing-version-constraints), e.g. `^3.0` - see [releases](https://github.com/chillerlan/php-settings-container/releases) for valid versions) ```json { "require": { - "php": "^7.4 || ^8.0", + "php": "^8.1", "chillerlan/php-settings-container": "dev-main" } } @@ -45,18 +45,14 @@ Profit! ## Usage -The `SettingsContainerInterface` (wrapped in`SettingsContainerAbstract` ) provides plug-in functionality for immutable object properties and adds some fancy, like loading/saving JSON, arrays etc. +The `SettingsContainerInterface` (wrapped in`SettingsContainerAbstract`) provides plug-in functionality for immutable object properties and adds some fancy, like loading/saving JSON, arrays etc. It takes an `iterable` as the only constructor argument and calls a method with the trait's name on invocation (`MyTrait::MyTrait()`) for each used trait. +A PHPStan ruleset to exclude errors generated by accessing magic properties on `SettingsContainerInterface` can be found in `rules-magic-access.neon`. + + ### Simple usage ```php -class MyContainer extends SettingsContainerAbstract{ - protected $foo; - protected $bar; -} -``` -Typed properties in PHP 7.4+: -```php class MyContainer extends SettingsContainerAbstract{ protected string $foo; protected string $bar; @@ -64,12 +60,12 @@ class MyContainer extends SettingsContainerAbstract{ ``` ```php -// use it just like a \stdClass +// use it just like a \stdClass (except the properties are fixed) $container = new MyContainer; $container->foo = 'what'; $container->bar = 'foo'; -// which is equivalent to +// which is equivalent to $container = new MyContainer(['bar' => 'foo', 'foo' => 'what']); // ...or try $container->fromJSON('{"foo": "what", "bar": "foo"}'); @@ -90,37 +86,48 @@ var_dump($container->nope); // -> null ### Advanced usage ```php +// from library 1 trait SomeOptions{ - protected $foo; - protected $what; - + protected string $foo; + protected string $what; + // this method will be called in SettingsContainerAbstract::construct() // after the properties have been set - protected function SomeOptions(){ + protected function SomeOptions():void{ // just some constructor stuff... $this->foo = strtoupper($this->foo); } - + + /* + * special prefixed magic setters & getters + */ + // this method will be called from __set() when property $what is set - protected function set_what(string $value){ + protected function set_what(string $value):void{ $this->what = md5($value); } + + // this method is called on __get() for the property $what + protected function get_what():string{ + return 'hash: '.$this->what; + } } +// from library 2 trait MoreOptions{ - protected $bar = 'whatever'; // provide default values + protected string $bar = 'whatever'; // provide default values } ``` ```php $commonOptions = [ // SomeOptions - 'foo' => 'whatever', + 'foo' => 'whatever', // MoreOptions 'bar' => 'nothing', ]; -// now plug the several library options together to a single object +// now plug the several library options together to a single object $container = new class ($commonOptions) extends SettingsContainerAbstract{ use SomeOptions, MoreOptions; }; @@ -129,27 +136,31 @@ var_dump($container->foo); // -> WHATEVER (constructor ran strtoupper on the val var_dump($container->bar); // -> nothing $container->what = 'some value'; -var_dump($container->what); // -> md5 hash of "some value" +var_dump($container->what); // -> hash: 5946210c9e93ae37891dfe96c3e39614 (custom getter added "hash: ") ``` ### API #### [`SettingsContainerAbstract`](https://github.com/chillerlan/php-settings-container/blob/main/src/SettingsContainerAbstract.php) -method | return | info --------- | ---- | ----------- -`__construct(iterable $properties = null)` | - | calls `construct()` internally after the properties have been set -(protected) `construct()` | void | calls a method with trait name as replacement constructor for each used trait -`__get(string $property)` | mixed | calls `$this->{'get_'.$property}()` if such a method exists -`__set(string $property, $value)` | void | calls `$this->{'set_'.$property}($value)` if such a method exists -`__isset(string $property)` | bool | -`__unset(string $property)` | void | -`__toString()` | string | a JSON string -`toArray()` | array | -`fromIterable(iterable $properties)` | `SettingsContainerInterface` | -`toJSON(int $jsonOptions = null)` | string | accepts [JSON options constants](http://php.net/manual/json.constants.php) -`fromJSON(string $json)` | `SettingsContainerInterface` | -`jsonSerialize()` | mixed | implements the [`JsonSerializable`](https://www.php.net/manual/en/jsonserializable.jsonserialize.php) interface +| method | return | info | +|--------------------------------------------|------------------------------|---------------------------------------------------------------------------------------------------------------------| +| `__construct(iterable $properties = null)` | - | calls `construct()` internally after the properties have been set | +| (protected) `construct()` | void | calls a method with trait name as replacement constructor for each used trait | +| `__get(string $property)` | mixed | calls `$this->{'get_'.$property}()` if such a method exists | +| `__set(string $property, $value)` | void | calls `$this->{'set_'.$property}($value)` if such a method exists | +| `__isset(string $property)` | bool | | +| `__unset(string $property)` | void | | +| `__toString()` | string | a JSON string | +| `toArray()` | array | | +| `fromIterable(iterable $properties)` | `SettingsContainerInterface` | | +| `toJSON(int $jsonOptions = null)` | string | accepts [JSON options constants](http://php.net/manual/json.constants.php) | +| `fromJSON(string $json)` | `SettingsContainerInterface` | | +| `jsonSerialize()` | mixed | implements the [`JsonSerializable`](https://www.php.net/manual/en/jsonserializable.jsonserialize.php) interface | +| `serialize()` | string | implements the [`Serializable`](https://www.php.net/manual/en/serializable.serialize.php) interface | +| `unserialize(string $data)` | void | implements the [`Serializable`](https://www.php.net/manual/en/serializable.unserialize.php) interface | +| `__serialize()` | array | implements the [`Serializable`](https://www.php.net/manual/en/language.oop5.magic.php#object.serialize) interface | +| `__unserialize(array $data)` | void | implements the [`Serializable`](https://www.php.net/manual/en/language.oop5.magic.php#object.unserialize) interface | ## Disclaimer This might be either an utterly genius or completely stupid idea - you decide. However, i like it and it works. diff --git a/vendor/chillerlan/php-settings-container/composer.json b/vendor/chillerlan/php-settings-container/composer.json index 1d89b6c41..16b8e5ecb 100644 --- a/vendor/chillerlan/php-settings-container/composer.json +++ b/vendor/chillerlan/php-settings-container/composer.json @@ -1,12 +1,12 @@ { "name": "chillerlan/php-settings-container", - "description": "A container class for immutable settings objects. Not a DI container. PHP 7.4+", + "description": "A container class for immutable settings objects. Not a DI container.", "homepage": "https://github.com/chillerlan/php-settings-container", "license": "MIT", "type": "library", "minimum-stability": "stable", "keywords": [ - "php7", "helper", "container", "settings", "configuration" + "helper", "container", "settings", "configuration" ], "authors": [ { @@ -20,27 +20,29 @@ "source": "https://github.com/chillerlan/php-settings-container" }, "require": { - "php": "^7.4 || ^8.0", + "php": "^8.1", "ext-json": "*" }, "require-dev": { - "phan/phan": "^5.3", - "phpunit/phpunit": "^9.5" + "phpmd/phpmd": "^2.15", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-deprecation-rules": "^1.2", + "phpunit/phpunit": "^10.5", + "squizlabs/php_codesniffer": "^3.10" }, "autoload": { "psr-4": { - "chillerlan\\Settings\\": "src/" + "chillerlan\\Settings\\": "src" } }, "autoload-dev": { "psr-4": { - "chillerlan\\SettingsTest\\": "tests/", - "chillerlan\\SettingsExamples\\": "examples/" + "chillerlan\\SettingsTest\\": "tests" } }, "scripts": { "phpunit": "@php vendor/bin/phpunit", - "phan": "@php vendor/bin/phan" + "phpstan": "@php vendor/bin/phpstan" }, "config": { "lock": false, diff --git a/vendor/chillerlan/php-settings-container/docs/Readme.md b/vendor/chillerlan/php-settings-container/docs/Readme.md deleted file mode 100644 index 7749a1e7f..000000000 --- a/vendor/chillerlan/php-settings-container/docs/Readme.md +++ /dev/null @@ -1,13 +0,0 @@ -# Auto generated API documentation - -The API documentation can be auto generated with [phpDocumentor](https://www.phpdoc.org/). -There is an [online version available](https://chillerlan.github.io/php-settings-container/) via the [gh-pages branch](https://github.com/chillerlan/php-settings-container/tree/gh-pages) that is [automatically deployed](https://github.com/chillerlan/php-settings-container/deployments) on each push to main. - -Locally created docs will appear in this directory. If you'd like to create local docs, please follow these steps: - -- [download phpDocumentor](https://github.com/phpDocumentor/phpDocumentor/releases) v3+ as .phar archive -- run it in the repository root directory: - - on Windows `c:\path\to\php.exe c:\path\to\phpDocumentor.phar --config=phpdoc.xml` - - on Linux just `php /path/to/phpDocumentor.phar --config=phpdoc.xml` -- open [index.html](./index.html) in a browser -- profit! diff --git a/vendor/chillerlan/php-settings-container/examples/advanced.php b/vendor/chillerlan/php-settings-container/examples/advanced.php deleted file mode 100644 index f11642c83..000000000 --- a/vendor/chillerlan/php-settings-container/examples/advanced.php +++ /dev/null @@ -1,51 +0,0 @@ - - * @copyright 2018 smiley - * @license MIT - */ - -namespace chillerlan\SettingsExamples; - -use chillerlan\Settings\SettingsContainerAbstract; - -require_once __DIR__.'/../vendor/autoload.php'; - -// from library #1 -trait SomeOptions{ - protected string $foo = ''; - - // this method will be called in SettingsContainerAbstract::__construct() after the properties have been set - protected function SomeOptions(){ - // just some constructor stuff... - $this->foo = strtoupper($this->foo); - } -} - -// from library #2 -trait MoreOptions{ - protected string $bar = 'whatever'; // provide default values -} - -$commonOptions = [ - // SomeOptions - 'foo' => 'whatever', - // MoreOptions - 'bar' => 'nothing', -]; - -// now plug the several library options together to a single object - -/** - * @property string $foo - * @property string $bar - */ -class MySettings extends SettingsContainerAbstract{ - use SomeOptions, MoreOptions; // ... -}; - -$container = new MySettings($commonOptions); - -var_dump($container->foo); // -> WHATEVER (constructor ran strtoupper on the value) -var_dump($container->bar); // -> nothing diff --git a/vendor/chillerlan/php-settings-container/examples/simple.php b/vendor/chillerlan/php-settings-container/examples/simple.php deleted file mode 100644 index acdbe4cb3..000000000 --- a/vendor/chillerlan/php-settings-container/examples/simple.php +++ /dev/null @@ -1,29 +0,0 @@ - - * @copyright 2018 smiley - * @license MIT - */ - -namespace chillerlan\SettingsExamples; - -use chillerlan\Settings\SettingsContainerAbstract; - -require_once __DIR__.'/../vendor/autoload.php'; - -class MyContainer extends SettingsContainerAbstract{ - protected $foo; - protected $bar; -} - -/** @var \chillerlan\Settings\SettingsContainerInterface $container */ -$container = new MyContainer(['foo' => 'what']); -$container->bar = 'foo'; - -var_dump($container->toJSON()); // -> {"foo":"what","bar":"foo"} - -// non-existing properties will be ignored: -$container->nope = 'what'; - -var_dump($container->nope); // -> NULL diff --git a/vendor/chillerlan/php-settings-container/phpdoc.xml b/vendor/chillerlan/php-settings-container/phpdoc.xml deleted file mode 100644 index d440f1d8a..000000000 --- a/vendor/chillerlan/php-settings-container/phpdoc.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - docs - utf8 - - TODO - - - - docs - - - src - tests - - -