diff options
| author | 2023-12-18 17:59:16 +0100 | |
|---|---|---|
| committer | 2023-12-18 17:59:16 +0100 | |
| commit | a80a5f48a16e7d232168a7aaa68e9a1804235ce1 (patch) | |
| tree | a515b88592629dea7e83b96e26e2452d3f98a98e /app/Models/AttributesTrait.php | |
| parent | 6bb45a87268157aab961a6a4a728d9a9bbe043b0 (diff) | |
Pass PHPStan level 8 (#5946)
* Pass PHPStan level 8
And prepare for PHPStan level 9 https://phpstan.org/user-guide/rule-levels
* Revert wrong replace in comment
* Fix PHPStan level 8
* Update PHPStan and other dev dependencies
* Remove obsolete comment
* noVariableVariables and towards bleedingEdge
https://github.com/phpstan/phpstan-strict-rules
https://phpstan.org/blog/what-is-bleeding-edge
* More bleedingEdge
* A bit more PHPStan level 9
* More PHPStan level 9
* Prepare for booleansInConditions
Ignore int and null
* Revert wrong line
* More fixes
* Fix keep_max_n_unread
* Stricter attribute functions
* Stricter callHooks and more PHPStan level 9
* More typing
* A tiny more
Diffstat (limited to 'app/Models/AttributesTrait.php')
| -rw-r--r-- | app/Models/AttributesTrait.php | 60 |
1 files changed, 43 insertions, 17 deletions
diff --git a/app/Models/AttributesTrait.php b/app/Models/AttributesTrait.php index 39154182b..e94a973d9 100644 --- a/app/Models/AttributesTrait.php +++ b/app/Models/AttributesTrait.php @@ -10,28 +10,54 @@ trait FreshRSS_AttributesTrait { */ private array $attributes = []; + /** @return array<string,mixed> */ + public function attributes(): array { + return $this->attributes; + } + /** - * @phpstan-return ($key is non-empty-string ? mixed : array<string,mixed>) - * @return array<string,mixed>|mixed|null + * @param non-empty-string $key + * @return array<int|string,mixed>|null */ - public function attributes(string $key = '') { - if ($key === '') { - return $this->attributes; - } else { - return $this->attributes[$key] ?? null; + public function attributeArray(string $key): ?array { + $a = $this->attributes[$key] ?? null; + return is_array($a) ? $a : null; + } + + /** @param non-empty-string $key */ + public function attributeBoolean(string $key): ?bool { + $a = $this->attributes[$key] ?? null; + return is_bool($a) ? $a : null; + } + + /** @param non-empty-string $key */ + public function attributeInt(string $key): ?int { + $a = $this->attributes[$key] ?? null; + return is_int($a) ? $a : null; + } + + /** @param non-empty-string $key */ + public function attributeString(string $key): ?string { + $a = $this->attributes[$key] ?? null; + return is_string($a) ? $a : null; + } + + /** @param string|array<string,mixed> $values Values, not HTML-encoded */ + public function _attributes($values): void { + if (is_string($values)) { + $values = json_decode($values, true); + } + if (is_array($values)) { + $this->attributes = $values; } } - /** @param string|array<mixed>|bool|int|null $value Value, not HTML-encoded */ - public function _attributes(string $key, $value = null): void { - if ($key == '') { - if (is_string($value)) { - $value = json_decode($value, true); - } - if (is_array($value)) { - $this->attributes = $value; - } - } elseif ($value === null) { + /** + * @param non-empty-string $key + * @param array<string,mixed>|mixed|null $value Value, not HTML-encoded + */ + public function _attribute(string $key, $value = null): void { + if ($value === null) { unset($this->attributes[$key]); } else { $this->attributes[$key] = $value; |
