diff options
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; |
