From 1742fb65c53a2a6cd6a310d225add25ee20c14b6 Mon Sep 17 00:00:00 2001 From: wn_ Date: Tue, 10 Dec 2024 18:58:17 +0000 Subject: Use the spread operator instead of 'array_merge' in more places. PHP 8.1 introduced support for merging string-key arrays (last array with a wins). --- classes/DiskCache.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'classes/DiskCache.php') diff --git a/classes/DiskCache.php b/classes/DiskCache.php index 249079b36..c52759a75 100644 --- a/classes/DiskCache.php +++ b/classes/DiskCache.php @@ -301,8 +301,11 @@ class DiskCache implements Cache_Adapter { if ($this->exists($local_filename) && !$force) return true; - $data = UrlHelper::fetch(array_merge(["url" => $url, - "max_size" => Config::get(Config::MAX_CACHE_FILE_SIZE)], $options)); + $data = UrlHelper::fetch([ + 'url' => $url, + 'max_size' => Config::get(Config::MAX_CACHE_FILE_SIZE), + ...$options, + ]); if ($data) return $this->put($local_filename, $data) > 0; -- cgit v1.2.3-54-g00ecf From a1bd6cea1bbb3041ee8e2ba44a80cd2ea0b8209f Mon Sep 17 00:00:00 2001 From: wn_ Date: Tue, 10 Dec 2024 20:31:16 +0000 Subject: Use native typing in more places and clean up 'FeedEnclosure' a bit. --- classes/API.php | 3 +-- classes/Config.php | 10 +++---- classes/Db.php | 9 +++---- classes/DiskCache.php | 5 ++-- classes/FeedEnclosure.php | 26 ++++++------------ classes/FeedItem_Atom.php | 10 +++---- classes/FeedItem_Common.php | 61 ++++++++++++++++++------------------------- classes/FeedItem_RSS.php | 16 +++++------- classes/FeedParser.php | 22 ++++++---------- classes/Logger.php | 6 ++--- classes/Pref_Filters.php | 2 +- classes/Prefs.php | 8 +++--- tests/integration/ApiTest.php | 8 ++---- 13 files changed, 71 insertions(+), 115 deletions(-) (limited to 'classes/DiskCache.php') diff --git a/classes/API.php b/classes/API.php index 31a3bec97..241663b3d 100644 --- a/classes/API.php +++ b/classes/API.php @@ -14,8 +14,7 @@ class API extends Handler { const E_OPERATION_FAILED = "E_OPERATION_FAILED"; const E_NOT_FOUND = "E_NOT_FOUND"; - /** @var int|null */ - private $seq; + private ?int $seq = null; /** * @param array $reply diff --git a/classes/Config.php b/classes/Config.php index 9d671215a..356f81391 100644 --- a/classes/Config.php +++ b/classes/Config.php @@ -252,17 +252,15 @@ class Config { Config::HTTP_429_THROTTLE_INTERVAL => [ 3600, Config::T_INT ] ]; - /** @var Config|null */ - private static $instance; + private static ?Config $instance = null; /** @var array> */ - private $params = []; + private array $params = []; /** @var array */ - private $version = []; + private array $version = []; - /** @var Db_Migrations|null $migrations */ - private $migrations; + private Db_Migrations $migrations; public static function get_instance() : Config { if (self::$instance == null) diff --git a/classes/Db.php b/classes/Db.php index 4331b662e..2d8511258 100644 --- a/classes/Db.php +++ b/classes/Db.php @@ -1,11 +1,8 @@ $instances */ - private static $instances = []; + private static array $instances = []; /** * https://stackoverflow.com/a/53662733 diff --git a/classes/FeedEnclosure.php b/classes/FeedEnclosure.php index b5f5cc411..6ef9bca5e 100644 --- a/classes/FeedEnclosure.php +++ b/classes/FeedEnclosure.php @@ -1,21 +1,11 @@ xpath->evaluate("string(ancestor-or-self::*[@xml:base][1]/@xml:base)", $link); if ($link->getAttribute("rel") == "enclosure") { - $enc = new FeedEnclosure(); - - $enc->type = clean($link->getAttribute("type")); - $enc->length = clean($link->getAttribute("length")); - $enc->link = clean($link->getAttribute("href")); + $enc = new FeedEnclosure( + type: clean($link->getAttribute('type')), + length: clean($link->getAttribute('length')), + link: clean($link->getAttribute('href')), + ); if (!empty($base)) { $enc->link = UrlHelper::rewrite_relative($base, $enc->link); diff --git a/classes/FeedItem_Common.php b/classes/FeedItem_Common.php index 1471dc3e3..5b30ab20c 100644 --- a/classes/FeedItem_Common.php +++ b/classes/FeedItem_Common.php @@ -1,19 +1,10 @@ elem = $elem; - $this->xpath = $xpath; - $this->doc = $doc; - + function __construct( + protected readonly DOMElement $elem, + protected readonly DOMDocument $doc, + protected readonly DOMXPath $xpath, + ) { try { $source = $elem->getElementsByTagName("source")->item(0); @@ -97,13 +88,13 @@ abstract class FeedItem_Common extends FeedItem { $enclosures = $this->xpath->query("media:content", $this->elem); foreach ($enclosures as $enclosure) { - $enc = new FeedEnclosure(); - - $enc->type = clean($enclosure->getAttribute("type")); - $enc->link = clean($enclosure->getAttribute("url")); - $enc->length = clean($enclosure->getAttribute("length")); - $enc->height = clean($enclosure->getAttribute("height")); - $enc->width = clean($enclosure->getAttribute("width")); + $enc = new FeedEnclosure( + type: clean($enclosure->getAttribute('type')), + link: clean($enclosure->getAttribute('url')), + length: clean($enclosure->getAttribute('length')), + height: clean($enclosure->getAttribute('height')), + width: clean($enclosure->getAttribute('width')), + ); $medium = clean($enclosure->getAttribute("medium")); if (!$enc->type && $medium) { @@ -119,17 +110,17 @@ abstract class FeedItem_Common extends FeedItem { $enclosures = $this->xpath->query("media:group", $this->elem); foreach ($enclosures as $enclosure) { - $enc = new FeedEnclosure(); - /** @var DOMElement|null */ $content = $this->xpath->query("media:content", $enclosure)->item(0); if ($content) { - $enc->type = clean($content->getAttribute("type")); - $enc->link = clean($content->getAttribute("url")); - $enc->length = clean($content->getAttribute("length")); - $enc->height = clean($content->getAttribute("height")); - $enc->width = clean($content->getAttribute("width")); + $enc = new FeedEnclosure( + type: clean($content->getAttribute('type')), + link: clean($content->getAttribute('url')), + length: clean($content->getAttribute('length')), + height: clean($content->getAttribute('height')), + width: clean($content->getAttribute('width')), + ); $medium = clean($content->getAttribute("medium")); if (!$enc->type && $medium) { @@ -151,14 +142,12 @@ abstract class FeedItem_Common extends FeedItem { $enclosures = $this->xpath->query("media:thumbnail", $this->elem); foreach ($enclosures as $enclosure) { - $enc = new FeedEnclosure(); - - $enc->type = "image/generic"; - $enc->link = clean($enclosure->getAttribute("url")); - $enc->height = clean($enclosure->getAttribute("height")); - $enc->width = clean($enclosure->getAttribute("width")); - - array_push($encs, $enc); + $encs[] = new FeedEnclosure( + type: 'image/generic', + link: clean($enclosure->getAttribute('url')), + height: clean($enclosure->getAttribute('height')), + width: clean($enclosure->getAttribute('width')), + ); } return $encs; diff --git a/classes/FeedItem_RSS.php b/classes/FeedItem_RSS.php index ab1764577..2970e43bd 100644 --- a/classes/FeedItem_RSS.php +++ b/classes/FeedItem_RSS.php @@ -141,15 +141,13 @@ class FeedItem_RSS extends FeedItem_Common { $encs = array(); foreach ($enclosures as $enclosure) { - $enc = new FeedEnclosure(); - - $enc->type = clean($enclosure->getAttribute("type")); - $enc->link = clean($enclosure->getAttribute("url")); - $enc->length = clean($enclosure->getAttribute("length")); - $enc->height = clean($enclosure->getAttribute("height")); - $enc->width = clean($enclosure->getAttribute("width")); - - array_push($encs, $enc); + $encs[] = new FeedEnclosure( + type: clean($enclosure->getAttribute('type')), + link: clean($enclosure->getAttribute('url')), + length: clean($enclosure->getAttribute('length')), + height: clean($enclosure->getAttribute('height')), + width: clean($enclosure->getAttribute('width')), + ); } array_push($encs, ...parent::get_enclosures()); diff --git a/classes/FeedParser.php b/classes/FeedParser.php index c288ffc91..fd26226ae 100644 --- a/classes/FeedParser.php +++ b/classes/FeedParser.php @@ -1,29 +1,23 @@ */ - private $libxml_errors = []; + private array $libxml_errors = []; /** @var array */ - private $items = []; + private array $items = []; - /** @var string|null */ - private $link; + private ?string $link = null; - /** @var string|null */ - private $title; + private ?string $title = null; /** @var FeedParser::FEED_*|null */ - private $type; + private ?int $type = null; - /** @var DOMXPath|null */ - private $xpath; + private ?DOMXPath $xpath = null; const FEED_UNKNOWN = -1; const FEED_RDF = 0; diff --git a/classes/Logger.php b/classes/Logger.php index 049b63d5e..05a117a0b 100644 --- a/classes/Logger.php +++ b/classes/Logger.php @@ -1,10 +1,8 @@ > $action_descriptions */ - private $action_descriptions = []; + private array $action_descriptions = []; function before(string $method) : bool { diff --git a/classes/Prefs.php b/classes/Prefs.php index f7e6e39c0..08f402d40 100644 --- a/classes/Prefs.php +++ b/classes/Prefs.php @@ -144,14 +144,12 @@ class Prefs { Prefs::_PREFS_MIGRATED ]; - /** @var Prefs|null */ - private static $instance; + private static ?Prefs $instance = null; /** @var array */ - private $cache = []; + private array $cache = []; - /** @var PDO */ - private $pdo; + private ?PDO $pdo = null; public static function get_instance() : Prefs { if (self::$instance == null) diff --git a/tests/integration/ApiTest.php b/tests/integration/ApiTest.php index 4b47ec4b0..65c3828f6 100644 --- a/tests/integration/ApiTest.php +++ b/tests/integration/ApiTest.php @@ -3,12 +3,8 @@ use PHPUnit\Framework\TestCase; /** @group integration */ final class ApiTest extends TestCase { - - /** @var string */ - private $api_url; - - /** @var string */ - private $sid; + private string $api_url; + private string $sid; function __construct() { $this->api_url = getenv('API_URL'); -- cgit v1.2.3-54-g00ecf