diff --git a/.github/workflows/ca.yml b/.github/workflows/ca.yml
index 1e05d32..895e483 100644
--- a/.github/workflows/ca.yml
+++ b/.github/workflows/ca.yml
@@ -20,6 +20,7 @@ jobs:
matrix:
php-version:
- "7.4"
+ - "8.1"
steps:
- uses: actions/checkout@v3
diff --git a/.github/workflows/cs.yml b/.github/workflows/cs.yml
index 19d71fc..1b826dd 100644
--- a/.github/workflows/cs.yml
+++ b/.github/workflows/cs.yml
@@ -20,6 +20,7 @@ jobs:
matrix:
php-version:
- "7.4"
+ - "8.1"
steps:
- uses: actions/checkout@v3
diff --git a/.github/workflows/example.yml b/.github/workflows/example.yml
index e5739be..4f2842b 100644
--- a/.github/workflows/example.yml
+++ b/.github/workflows/example.yml
@@ -20,7 +20,7 @@ jobs:
strategy:
matrix:
php-version:
- - "7.4"
+ - "8.1"
defaults:
run:
diff --git a/.github/workflows/mt.yml b/.github/workflows/mt.yml
index fee5483..18ea155 100644
--- a/.github/workflows/mt.yml
+++ b/.github/workflows/mt.yml
@@ -17,7 +17,7 @@ jobs:
strategy:
matrix:
php-version:
- - "8.2"
+ - "8.4"
steps:
- uses: actions/checkout@v3
diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml
index b89fd5a..3795d39 100644
--- a/.github/workflows/php.yml
+++ b/.github/workflows/php.yml
@@ -22,6 +22,7 @@ jobs:
- "8.1"
- "8.2"
- "8.3"
+ - "8.4"
steps:
- uses: actions/checkout@v3
diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php
index 2edc5cd..eb56125 100644
--- a/.php-cs-fixer.dist.php
+++ b/.php-cs-fixer.dist.php
@@ -66,6 +66,7 @@
'blank_line_after_opening_tag' => false,
'linebreak_after_opening_tag' => false,
'blank_line_between_import_groups' => false,
+ 'nullable_type_declaration_for_default_null_value' => true,
])
->setFinder(
PhpCsFixer\Finder::create()
diff --git a/example/src/Automattic/MyAwesomeReader/StreamBuilder/Trending/Streams/TrendingTopicStream.php b/example/src/Automattic/MyAwesomeReader/StreamBuilder/Trending/Streams/TrendingTopicStream.php
index 376abae..00f7957 100644
--- a/example/src/Automattic/MyAwesomeReader/StreamBuilder/Trending/Streams/TrendingTopicStream.php
+++ b/example/src/Automattic/MyAwesomeReader/StreamBuilder/Trending/Streams/TrendingTopicStream.php
@@ -48,8 +48,8 @@ public function __construct(string $identity)
/** @inheritDoc */
protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
if (!$cursor instanceof TrendingTopicStreamCursor) {
diff --git a/extras/phpcs/TumblrApp/ruleset.xml b/extras/phpcs/TumblrApp/ruleset.xml
index 2c1282d..ee63131 100644
--- a/extras/phpcs/TumblrApp/ruleset.xml
+++ b/extras/phpcs/TumblrApp/ruleset.xml
@@ -202,6 +202,7 @@
+
diff --git a/lib/Tumblr/StreamBuilder/Codec/Codec.php b/lib/Tumblr/StreamBuilder/Codec/Codec.php
index d42cbf4..9520277 100644
--- a/lib/Tumblr/StreamBuilder/Codec/Codec.php
+++ b/lib/Tumblr/StreamBuilder/Codec/Codec.php
@@ -75,7 +75,7 @@ abstract class Codec
* @param CacheProvider|null $cache_provider The cache provider used to deserialize a template.
* @see @StreamContext, there are stuff from stream are cached during the to_template process.
*/
- public function __construct(CacheProvider $cache_provider = null)
+ public function __construct(?CacheProvider $cache_provider = null)
{
$this->cache_provider = $cache_provider;
}
diff --git a/lib/Tumblr/StreamBuilder/Exceptions/InvalidStreamArrayException.php b/lib/Tumblr/StreamBuilder/Exceptions/InvalidStreamArrayException.php
index b92b8b1..93cb40e 100644
--- a/lib/Tumblr/StreamBuilder/Exceptions/InvalidStreamArrayException.php
+++ b/lib/Tumblr/StreamBuilder/Exceptions/InvalidStreamArrayException.php
@@ -30,7 +30,7 @@ class InvalidStreamArrayException extends \InvalidArgumentException
/**
* @param array|null $stream_array The stream_array which is sent to the deserializer
*/
- public function __construct(array $stream_array = null)
+ public function __construct(?array $stream_array = null)
{
parent::__construct(sprintf(
'Invalid stream array: %s',
diff --git a/lib/Tumblr/StreamBuilder/Exceptions/TemplateNotFoundException.php b/lib/Tumblr/StreamBuilder/Exceptions/TemplateNotFoundException.php
index 1f0755d..b6bdf3b 100644
--- a/lib/Tumblr/StreamBuilder/Exceptions/TemplateNotFoundException.php
+++ b/lib/Tumblr/StreamBuilder/Exceptions/TemplateNotFoundException.php
@@ -32,7 +32,7 @@ class TemplateNotFoundException extends \InvalidArgumentException
* @param int $code The exception code.
* @param \Throwable $previous The previous exception.
*/
- public function __construct($message = "Template not found", $code = 404, \Throwable $previous = null)
+ public function __construct($message = "Template not found", $code = 404, ?\Throwable $previous = null)
{
parent::__construct($message, $code, $previous);
}
diff --git a/lib/Tumblr/StreamBuilder/FencepostRanking/FencepostCursor.php b/lib/Tumblr/StreamBuilder/FencepostRanking/FencepostCursor.php
index f65421f..805bfda 100644
--- a/lib/Tumblr/StreamBuilder/FencepostRanking/FencepostCursor.php
+++ b/lib/Tumblr/StreamBuilder/FencepostRanking/FencepostCursor.php
@@ -79,8 +79,8 @@ public function __construct(
int $fencepost_timestamp_ms,
int $region,
int $head_offset,
- StreamCursor $tail_cursor = null,
- StreamCursor $inject_cursor = null
+ ?StreamCursor $tail_cursor = null,
+ ?StreamCursor $inject_cursor = null
) {
if ($region !== self::REGION_INJECT && is_null($tail_cursor)) {
throw new \InvalidArgumentException('Head or Tail region must contains tail_cursor');
diff --git a/lib/Tumblr/StreamBuilder/FencepostRanking/FencepostRankedStream.php b/lib/Tumblr/StreamBuilder/FencepostRanking/FencepostRankedStream.php
index 3c099e6..6bd47fc 100644
--- a/lib/Tumblr/StreamBuilder/FencepostRanking/FencepostRankedStream.php
+++ b/lib/Tumblr/StreamBuilder/FencepostRanking/FencepostRankedStream.php
@@ -166,8 +166,8 @@ abstract protected function get_fence_id_str(): string;
*/
protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
if (!(is_null($cursor) || ($cursor instanceof FencepostCursor))) {
@@ -195,7 +195,7 @@ protected function _enumerate(
* @param EnumerationOptions|null $option The option on enumeration
* @return array [Fencepost|null, FencepostRankedStreamCursor|null]
*/
- private function setup_enumeration(FencepostCursor $in_cursor = null, StreamTracer $tracer = null, ?EnumerationOptions $option = null)
+ private function setup_enumeration(?FencepostCursor $in_cursor = null, ?StreamTracer $tracer = null, ?EnumerationOptions $option = null)
{
if (!is_null($in_cursor)) {
// you already have a cursor, try to turn it into a fencepost:
@@ -287,7 +287,7 @@ private function setup_enumeration_from_existing_fencepost(
private function setup_enumeration_from_new_fencepost(
?StreamTracer $tracer,
int $now_ms,
- int $latest_ms = null,
+ ?int $latest_ms = null,
?EnumerationOptions $option = null
): array {
$fencepost = $this->commit_new_fencepost($now_ms, $latest_ms, $tracer, $option);
@@ -558,7 +558,7 @@ private function enumerate_rec_head(
protected function enumerate_final(
int $count,
FencepostCursor $cursor,
- StreamTracer $tracer = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
StreamBuilder::getDependencyBag()->getLog()
@@ -580,7 +580,7 @@ protected function enumerate_final_inner(
int $count,
?StreamCursor $cursor,
?int $fencepost_timestamp_ms,
- StreamTracer $tracer = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
$inner_result = $this->inner->enumerate($count, $cursor, $tracer, $option);
@@ -608,8 +608,8 @@ protected function enumerate_final_inner(
*/
protected function commit_new_fencepost(
int $current_ms,
- int $previous_fencepost_ms = null,
- StreamTracer $tracer = null,
+ ?int $previous_fencepost_ms = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
) {
// we are building a new fencepost between $current_ms and $previous_fencepost_ms.
@@ -659,8 +659,8 @@ protected function enumerate_inner_between(
int $before_ms_inclusive,
?int $after_ms_exclusive,
int $count,
- StreamCursor $inner_cursor = null,
- StreamTracer $tracer = null
+ ?StreamCursor $inner_cursor = null,
+ ?StreamTracer $tracer = null
): StreamResult {
$option = new EnumerationOptions($before_ms_inclusive, $after_ms_exclusive);
$result = $this->inner->enumerate($count, $inner_cursor, $tracer, $option);
@@ -701,7 +701,7 @@ public function can_enumerate_with_time_range(): bool
public function log_commit_new_fence_stats(
StreamResult $unranked_candidates,
int $current_ms,
- int $previous_fencepost_ms = null
+ ?int $previous_fencepost_ms = null
): void {
$ps_gap_in_seconds = ($current_ms - ($previous_fencepost_ms ?? 0)) / 1000;
// Track when last_ts is missing, putting 1 second as a placeholder
diff --git a/lib/Tumblr/StreamBuilder/InjectionAllocatorResult.php b/lib/Tumblr/StreamBuilder/InjectionAllocatorResult.php
index c108d1c..72efe4b 100644
--- a/lib/Tumblr/StreamBuilder/InjectionAllocatorResult.php
+++ b/lib/Tumblr/StreamBuilder/InjectionAllocatorResult.php
@@ -39,7 +39,7 @@ final class InjectionAllocatorResult
* @param array|null $state The injector state to coordinate between different pages.
* @throws TypeMismatchException If position is not an int.
*/
- public function __construct(array $out, array $state = null)
+ public function __construct(array $out, ?array $state = null)
{
foreach ($out as $position) {
if (!is_int($position)) {
diff --git a/lib/Tumblr/StreamBuilder/InjectionAllocators/ExpectedValueInjectionAllocator.php b/lib/Tumblr/StreamBuilder/InjectionAllocators/ExpectedValueInjectionAllocator.php
index 1b3e525..e181446 100644
--- a/lib/Tumblr/StreamBuilder/InjectionAllocators/ExpectedValueInjectionAllocator.php
+++ b/lib/Tumblr/StreamBuilder/InjectionAllocators/ExpectedValueInjectionAllocator.php
@@ -72,7 +72,7 @@ public static function from_template(StreamContext $context): self
/**
* @inheritDoc
*/
- public function allocate(int $page_size, array $state = null): InjectionAllocatorResult
+ public function allocate(int $page_size, ?array $state = null): InjectionAllocatorResult
{
$expected_value = $page_size * $this->slot_injection_probability;
$count = floor($expected_value);
diff --git a/lib/Tumblr/StreamBuilder/InjectionAllocators/GlobalFixedInjectionAllocator.php b/lib/Tumblr/StreamBuilder/InjectionAllocators/GlobalFixedInjectionAllocator.php
index 5597ccf..28c1fb9 100644
--- a/lib/Tumblr/StreamBuilder/InjectionAllocators/GlobalFixedInjectionAllocator.php
+++ b/lib/Tumblr/StreamBuilder/InjectionAllocators/GlobalFixedInjectionAllocator.php
@@ -32,7 +32,7 @@ class GlobalFixedInjectionAllocator extends FixedInjectionAllocator
/**
* @inheritDoc
*/
- public function allocate(int $page_size, array $state = null): InjectionAllocatorResult
+ public function allocate(int $page_size, ?array $state = null): InjectionAllocatorResult
{
$pos_base = $state['pos_base'] ?? 0;
$out = [];
diff --git a/lib/Tumblr/StreamBuilder/InjectionAllocators/InjectionAllocator.php b/lib/Tumblr/StreamBuilder/InjectionAllocators/InjectionAllocator.php
index c63e6c0..b7ad276 100644
--- a/lib/Tumblr/StreamBuilder/InjectionAllocators/InjectionAllocator.php
+++ b/lib/Tumblr/StreamBuilder/InjectionAllocators/InjectionAllocator.php
@@ -36,5 +36,5 @@ abstract class InjectionAllocator extends Templatable
* @param array|null $state The state of the injector.
* @return InjectionAllocatorResult .
*/
- abstract public function allocate(int $page_size, array $state = null): InjectionAllocatorResult;
+ abstract public function allocate(int $page_size, ?array $state = null): InjectionAllocatorResult;
}
diff --git a/lib/Tumblr/StreamBuilder/InjectionAllocators/LocalFixedInjectionAllocator.php b/lib/Tumblr/StreamBuilder/InjectionAllocators/LocalFixedInjectionAllocator.php
index d90a46e..f2bf685 100644
--- a/lib/Tumblr/StreamBuilder/InjectionAllocators/LocalFixedInjectionAllocator.php
+++ b/lib/Tumblr/StreamBuilder/InjectionAllocators/LocalFixedInjectionAllocator.php
@@ -31,7 +31,7 @@ class LocalFixedInjectionAllocator extends FixedInjectionAllocator
/**
* @inheritDoc
*/
- public function allocate(int $page_size, array $state = null): InjectionAllocatorResult
+ public function allocate(int $page_size, ?array $state = null): InjectionAllocatorResult
{
$out = [];
foreach ($this->positions as $p) {
diff --git a/lib/Tumblr/StreamBuilder/InjectionAllocators/ProbabilisticInjectionAllocator.php b/lib/Tumblr/StreamBuilder/InjectionAllocators/ProbabilisticInjectionAllocator.php
index ebca9d7..76daac1 100644
--- a/lib/Tumblr/StreamBuilder/InjectionAllocators/ProbabilisticInjectionAllocator.php
+++ b/lib/Tumblr/StreamBuilder/InjectionAllocators/ProbabilisticInjectionAllocator.php
@@ -61,7 +61,7 @@ public static function from_template(StreamContext $context): self
/**
* @inheritDoc
*/
- public function allocate(int $page_size, array $state = null): InjectionAllocatorResult
+ public function allocate(int $page_size, ?array $state = null): InjectionAllocatorResult
{
$out = [];
$mt_randmax = mt_getrandmax();
diff --git a/lib/Tumblr/StreamBuilder/InjectionAllocators/UniformInjectionAllocator.php b/lib/Tumblr/StreamBuilder/InjectionAllocators/UniformInjectionAllocator.php
index e455c2c..a68e33d 100644
--- a/lib/Tumblr/StreamBuilder/InjectionAllocators/UniformInjectionAllocator.php
+++ b/lib/Tumblr/StreamBuilder/InjectionAllocators/UniformInjectionAllocator.php
@@ -71,7 +71,7 @@ public static function from_template(StreamContext $context): self
/**
* @inheritDoc
*/
- public function allocate(int $page_size, array $state = null): InjectionAllocatorResult
+ public function allocate(int $page_size, ?array $state = null): InjectionAllocatorResult
{
$out = [];
// If there's no next_offset is set, we use remainder, most likely in the first page.
diff --git a/lib/Tumblr/StreamBuilder/InjectionPlan.php b/lib/Tumblr/StreamBuilder/InjectionPlan.php
index 9599ca6..48eb1f4 100644
--- a/lib/Tumblr/StreamBuilder/InjectionPlan.php
+++ b/lib/Tumblr/StreamBuilder/InjectionPlan.php
@@ -47,7 +47,7 @@ class InjectionPlan
* @param array|null $injector_state An array representing the state of the injector, if any, after injection.
* @throws TypeMismatchException If some value in the provided array is not a StreamInjection.
*/
- public function __construct(array $index_to_injection, array $injector_state = null)
+ public function __construct(array $index_to_injection, ?array $injector_state = null)
{
foreach ($index_to_injection as $j) {
if (!($j instanceof StreamInjection)) {
diff --git a/lib/Tumblr/StreamBuilder/SignalFetchers/CompositeSignalFetcher.php b/lib/Tumblr/StreamBuilder/SignalFetchers/CompositeSignalFetcher.php
index c3aead4..a79e795 100644
--- a/lib/Tumblr/StreamBuilder/SignalFetchers/CompositeSignalFetcher.php
+++ b/lib/Tumblr/StreamBuilder/SignalFetchers/CompositeSignalFetcher.php
@@ -53,7 +53,7 @@ public function __construct(array $fetchers, string $identity)
/**
* @inheritDoc
*/
- protected function fetch_inner(array $stream_elements, StreamTracer $tracer = null): SignalBundle
+ protected function fetch_inner(array $stream_elements, ?StreamTracer $tracer = null): SignalBundle
{
$bundles = [];
foreach ($this->fetchers as $fetcher) {
diff --git a/lib/Tumblr/StreamBuilder/SignalFetchers/SignalFetcher.php b/lib/Tumblr/StreamBuilder/SignalFetchers/SignalFetcher.php
index 2266fec..734c8b1 100644
--- a/lib/Tumblr/StreamBuilder/SignalFetchers/SignalFetcher.php
+++ b/lib/Tumblr/StreamBuilder/SignalFetchers/SignalFetcher.php
@@ -40,7 +40,7 @@ abstract class SignalFetcher extends Templatable
* @throws TypeMismatchException If some element is not a StreamElement.
* @throws \Exception If the signal fetcher fails for some other reason.
*/
- final public function fetch(array $stream_elements, StreamTracer $tracer = null): SignalBundle
+ final public function fetch(array $stream_elements, ?StreamTracer $tracer = null): SignalBundle
{
foreach ($stream_elements as $stream_element) {
if (!($stream_element instanceof StreamElement)) {
@@ -72,7 +72,7 @@ final public function fetch(array $stream_elements, StreamTracer $tracer = null)
* @param StreamTracer|null $tracer Tracer to use for metrics and logging of signal fetching process.
* @return SignalBundle
*/
- abstract protected function fetch_inner(array $stream_elements, StreamTracer $tracer = null): SignalBundle;
+ abstract protected function fetch_inner(array $stream_elements, ?StreamTracer $tracer = null): SignalBundle;
/**
* Get the string representation of the current signal fetcher.
diff --git a/lib/Tumblr/StreamBuilder/SignalFetchers/TimestampFetcher.php b/lib/Tumblr/StreamBuilder/SignalFetchers/TimestampFetcher.php
index 4b883af..0bd9ad5 100644
--- a/lib/Tumblr/StreamBuilder/SignalFetchers/TimestampFetcher.php
+++ b/lib/Tumblr/StreamBuilder/SignalFetchers/TimestampFetcher.php
@@ -35,7 +35,7 @@ final class TimestampFetcher extends SignalFetcher
/**
* @inheritDoc
*/
- protected function fetch_inner(array $stream_elements, StreamTracer $tracer = null): SignalBundle
+ protected function fetch_inner(array $stream_elements, ?StreamTracer $tracer = null): SignalBundle
{
$builder = new SignalBundleBuilder();
foreach ($stream_elements as $stream_element) {
diff --git a/lib/Tumblr/StreamBuilder/StreamCursors/ConcatenatedStreamCursor.php b/lib/Tumblr/StreamBuilder/StreamCursors/ConcatenatedStreamCursor.php
index e225c3a..9175f2a 100644
--- a/lib/Tumblr/StreamBuilder/StreamCursors/ConcatenatedStreamCursor.php
+++ b/lib/Tumblr/StreamBuilder/StreamCursors/ConcatenatedStreamCursor.php
@@ -39,7 +39,7 @@ class ConcatenatedStreamCursor extends StreamCursor
* @param StreamCursor $source_cursor The original cursor of element
* @throws \InvalidArgumentException If source index is not an int.
*/
- public function __construct(int $source_index, StreamCursor $source_cursor = null)
+ public function __construct(int $source_index, ?StreamCursor $source_cursor = null)
{
$this->source_index = $source_index;
$this->source_cursor = $source_cursor;
diff --git a/lib/Tumblr/StreamBuilder/StreamCursors/FilteredStreamCursor.php b/lib/Tumblr/StreamBuilder/StreamCursors/FilteredStreamCursor.php
index e5dab8b..b66501c 100644
--- a/lib/Tumblr/StreamBuilder/StreamCursors/FilteredStreamCursor.php
+++ b/lib/Tumblr/StreamBuilder/StreamCursors/FilteredStreamCursor.php
@@ -42,7 +42,7 @@ final class FilteredStreamCursor extends StreamCursor
* @param StreamCursor|null $cursor The inner cursor tracking pagination state of the inner stream to be filtered.
* @param StreamFilterState|null $filter_state The filter state.
*/
- public function __construct(StreamCursor $cursor = null, StreamFilterState $filter_state = null)
+ public function __construct(?StreamCursor $cursor = null, ?StreamFilterState $filter_state = null)
{
$this->cursor = $cursor;
$this->filter_state = $filter_state;
@@ -83,7 +83,7 @@ public static function from_template(StreamContext $context): self
* @param StreamFilterState|null $filter_state The filter state.
* @return FilteredStreamCursor
*/
- public function with_filter_state(StreamFilterState $filter_state = null): FilteredStreamCursor
+ public function with_filter_state(?StreamFilterState $filter_state = null): FilteredStreamCursor
{
return new self($this->cursor, $filter_state);
}
diff --git a/lib/Tumblr/StreamBuilder/StreamCursors/InjectedStreamCursor.php b/lib/Tumblr/StreamBuilder/StreamCursors/InjectedStreamCursor.php
index ba4149d..35d8626 100644
--- a/lib/Tumblr/StreamBuilder/StreamCursors/InjectedStreamCursor.php
+++ b/lib/Tumblr/StreamBuilder/StreamCursors/InjectedStreamCursor.php
@@ -43,7 +43,7 @@ final class InjectedStreamCursor extends StreamCursor
* @param StreamCursor $inner_cursor The cursor for the inner stream.
* @param array|null $injector_state The injector state.
*/
- public function __construct(StreamCursor $inner_cursor = null, array $injector_state = null)
+ public function __construct(?StreamCursor $inner_cursor = null, ?array $injector_state = null)
{
$this->inner_cursor = $inner_cursor;
$this->injector_state = $injector_state;
diff --git a/lib/Tumblr/StreamBuilder/StreamCursors/MultiCursor.php b/lib/Tumblr/StreamBuilder/StreamCursors/MultiCursor.php
index a4aaa78..17f7a36 100644
--- a/lib/Tumblr/StreamBuilder/StreamCursors/MultiCursor.php
+++ b/lib/Tumblr/StreamBuilder/StreamCursors/MultiCursor.php
@@ -41,7 +41,7 @@ final class MultiCursor extends StreamCursor
* @param array $stream_to_cursor Mapping from stream ids (strings) to StreamCursor objects
* @param array|null $injector_state State of injector, if any.
*/
- public function __construct(array $stream_to_cursor, array $injector_state = null)
+ public function __construct(array $stream_to_cursor, ?array $injector_state = null)
{
$this->stream_to_cursor = $stream_to_cursor;
$this->injector_state = $injector_state;
@@ -115,7 +115,7 @@ public function get_injector_state()
* @param array|null $injector_state State of injector, if any.
* @return MultiCursor
*/
- public function with_injector_state(array $injector_state = null): self
+ public function with_injector_state(?array $injector_state = null): self
{
return new MultiCursor($this->stream_to_cursor, $injector_state);
}
diff --git a/lib/Tumblr/StreamBuilder/StreamCursors/StreamCursor.php b/lib/Tumblr/StreamBuilder/StreamCursors/StreamCursor.php
index e102237..474f621 100644
--- a/lib/Tumblr/StreamBuilder/StreamCursors/StreamCursor.php
+++ b/lib/Tumblr/StreamBuilder/StreamCursors/StreamCursor.php
@@ -60,7 +60,7 @@ abstract class StreamCursor extends Templatable
* @param StreamCursor|null $other The other cursor.
* @return bool True, iff the cursors can combine.
*/
- final public function can_combine_with(StreamCursor $other = null): bool
+ final public function can_combine_with(?StreamCursor $other = null): bool
{
return is_null($other) || $this->_can_combine_with($other);
}
@@ -73,7 +73,7 @@ final public function can_combine_with(StreamCursor $other = null): bool
* @throws UncombinableCursorException If the provided cursor cannot be combined
* with this cursor.
*/
- final public function combine_with(StreamCursor $other = null): self
+ final public function combine_with(?StreamCursor $other = null): self
{
if (is_null($other)) {
return $this;
@@ -158,7 +158,7 @@ public static function encode(
string $secret,
string $encrypt_key,
string $initial_vector_seed = '',
- CacheProvider $cache_provider = null,
+ ?CacheProvider $cache_provider = null,
int $cache_size_threshold = self::DEFAULT_CACHE_SIZE_THRESHOLD,
?string $context = null,
?string $current_user_id = null
@@ -220,7 +220,7 @@ public static function decode(
array $encrypt_keys,
?string $current_user_id = null,
array $encrypt_seeds = [],
- CacheProvider $cache_provider = null
+ ?CacheProvider $cache_provider = null
): ?self {
if (empty(trim($cursor_string))) {
return null;
diff --git a/lib/Tumblr/StreamBuilder/StreamFilterState.php b/lib/Tumblr/StreamBuilder/StreamFilterState.php
index f2c83ec..f66975e 100644
--- a/lib/Tumblr/StreamBuilder/StreamFilterState.php
+++ b/lib/Tumblr/StreamBuilder/StreamFilterState.php
@@ -34,7 +34,7 @@ abstract class StreamFilterState extends Templatable
* @param StreamFilterState|null $other The other state.
* @return bool True, iff the states can merge.
*/
- final public function can_merge_with(StreamFilterState $other = null): bool
+ final public function can_merge_with(?StreamFilterState $other = null): bool
{
return is_null($other) || $this->_can_merge_with($other);
}
@@ -52,7 +52,7 @@ abstract protected function _can_merge_with(StreamFilterState $other): bool;
* @return StreamFilterState The combined state.
* @throws UnmergeableFilterStateException If the provided state cannot be merged with this state.
*/
- final public function merge_with(StreamFilterState $other = null): StreamFilterState
+ final public function merge_with(?StreamFilterState $other = null): StreamFilterState
{
if (is_null($other)) {
return $this;
diff --git a/lib/Tumblr/StreamBuilder/StreamFilters/CachedStreamFilter.php b/lib/Tumblr/StreamBuilder/StreamFilters/CachedStreamFilter.php
index 94ab8b7..40e40da 100644
--- a/lib/Tumblr/StreamBuilder/StreamFilters/CachedStreamFilter.php
+++ b/lib/Tumblr/StreamBuilder/StreamFilters/CachedStreamFilter.php
@@ -139,7 +139,7 @@ public static function from_template(StreamContext $context): self
/**
* @inheritDoc
*/
- final public function filter_inner(array $elements, StreamFilterState $state = null, StreamTracer $tracer = null): StreamFilterResult
+ final public function filter_inner(array $elements, ?StreamFilterState $state = null, ?StreamTracer $tracer = null): StreamFilterResult
{
$key_to_index = [];
$index_to_key = [];
diff --git a/lib/Tumblr/StreamBuilder/StreamFilters/ChronologicalRangeFilter.php b/lib/Tumblr/StreamBuilder/StreamFilters/ChronologicalRangeFilter.php
index fb4267d..56ccac8 100644
--- a/lib/Tumblr/StreamBuilder/StreamFilters/ChronologicalRangeFilter.php
+++ b/lib/Tumblr/StreamBuilder/StreamFilters/ChronologicalRangeFilter.php
@@ -47,8 +47,8 @@ final class ChronologicalRangeFilter extends StreamElementFilter
*/
public function __construct(
string $identity,
- int $max_timestamp_ms_inclusive = null,
- int $min_timestamp_ms_exclusive = null,
+ ?int $max_timestamp_ms_inclusive = null,
+ ?int $min_timestamp_ms_exclusive = null,
bool $release_non_chrono = false
) {
if (is_null($max_timestamp_ms_inclusive) && is_null($min_timestamp_ms_exclusive)) {
diff --git a/lib/Tumblr/StreamBuilder/StreamFilters/CompositeStreamFilter.php b/lib/Tumblr/StreamBuilder/StreamFilters/CompositeStreamFilter.php
index 24ccd24..4a71256 100644
--- a/lib/Tumblr/StreamBuilder/StreamFilters/CompositeStreamFilter.php
+++ b/lib/Tumblr/StreamBuilder/StreamFilters/CompositeStreamFilter.php
@@ -113,7 +113,7 @@ public static function from_template(StreamContext $context): self
/**
* @inheritDoc
*/
- final public function filter_inner(array $elements, StreamFilterState $state = null, StreamTracer $tracer = null): StreamFilterResult
+ final public function filter_inner(array $elements, ?StreamFilterState $state = null, ?StreamTracer $tracer = null): StreamFilterResult
{
/** @var CompositeStreamFilterState $state */
if (is_null($state)) {
diff --git a/lib/Tumblr/StreamBuilder/StreamFilters/DeduplicatedStreamFilter.php b/lib/Tumblr/StreamBuilder/StreamFilters/DeduplicatedStreamFilter.php
index f69a723..7b94718 100644
--- a/lib/Tumblr/StreamBuilder/StreamFilters/DeduplicatedStreamFilter.php
+++ b/lib/Tumblr/StreamBuilder/StreamFilters/DeduplicatedStreamFilter.php
@@ -67,7 +67,7 @@ public function get_state_id()
/**
* @inheritDoc
*/
- final public function filter_inner(array $elements, StreamFilterState $state = null, StreamTracer $tracer = null): StreamFilterResult
+ final public function filter_inner(array $elements, ?StreamFilterState $state = null, ?StreamTracer $tracer = null): StreamFilterResult
{
/** @var DeduplicatedStreamFilterState $state */
if (is_null($state)) {
diff --git a/lib/Tumblr/StreamBuilder/StreamFilters/InverseFilter.php b/lib/Tumblr/StreamBuilder/StreamFilters/InverseFilter.php
index a2f378b..97c7d16 100644
--- a/lib/Tumblr/StreamBuilder/StreamFilters/InverseFilter.php
+++ b/lib/Tumblr/StreamBuilder/StreamFilters/InverseFilter.php
@@ -93,7 +93,7 @@ public static function from_template(StreamContext $context): self
/**
* @inheritDoc
*/
- final public function filter_inner(array $elements, StreamFilterState $state = null, StreamTracer $tracer = null): StreamFilterResult
+ final public function filter_inner(array $elements, ?StreamFilterState $state = null, ?StreamTracer $tracer = null): StreamFilterResult
{
return $this->inner->filter($elements, $state, $tracer)->get_inverse();
}
diff --git a/lib/Tumblr/StreamBuilder/StreamFilters/NoopStreamFilter.php b/lib/Tumblr/StreamBuilder/StreamFilters/NoopStreamFilter.php
index c20453c..638bcc1 100644
--- a/lib/Tumblr/StreamBuilder/StreamFilters/NoopStreamFilter.php
+++ b/lib/Tumblr/StreamBuilder/StreamFilters/NoopStreamFilter.php
@@ -34,7 +34,7 @@ class NoopStreamFilter extends StreamFilter
/**
* @inheritDoc
*/
- final public function filter_inner(array $elements, StreamFilterState $state = null, StreamTracer $tracer = null): StreamFilterResult
+ final public function filter_inner(array $elements, ?StreamFilterState $state = null, ?StreamTracer $tracer = null): StreamFilterResult
{
$retained = $elements;
$released = [];
diff --git a/lib/Tumblr/StreamBuilder/StreamFilters/StreamElementFilter.php b/lib/Tumblr/StreamBuilder/StreamFilters/StreamElementFilter.php
index a1cb77f..f15e468 100644
--- a/lib/Tumblr/StreamBuilder/StreamFilters/StreamElementFilter.php
+++ b/lib/Tumblr/StreamBuilder/StreamFilters/StreamElementFilter.php
@@ -34,7 +34,7 @@ abstract class StreamElementFilter extends StreamFilter
/**
* @inheritDoc
*/
- final public function filter_inner(array $elements, StreamFilterState $state = null, StreamTracer $tracer = null): StreamFilterResult
+ final public function filter_inner(array $elements, ?StreamFilterState $state = null, ?StreamTracer $tracer = null): StreamFilterResult
{
$retained = [];
$released = [];
diff --git a/lib/Tumblr/StreamBuilder/StreamInjectors/GeneralStreamInjector.php b/lib/Tumblr/StreamBuilder/StreamInjectors/GeneralStreamInjector.php
index a7bcfbc..c6204eb 100644
--- a/lib/Tumblr/StreamBuilder/StreamInjectors/GeneralStreamInjector.php
+++ b/lib/Tumblr/StreamBuilder/StreamInjectors/GeneralStreamInjector.php
@@ -75,8 +75,8 @@ public function __construct(
protected function _plan_injection(
int $page_size,
Stream $requesting_stream,
- array $state = null,
- StreamTracer $tracer = null
+ ?array $state = null,
+ ?StreamTracer $tracer = null
): InjectionPlan {
$allocate_result = $this->allocator->allocate($page_size, $state);
$cursor = $this->cursorFromInjectionState($state ?? []);
diff --git a/lib/Tumblr/StreamBuilder/StreamInjectors/NoopInjector.php b/lib/Tumblr/StreamBuilder/StreamInjectors/NoopInjector.php
index 40d2bac..f45edc9 100644
--- a/lib/Tumblr/StreamBuilder/StreamInjectors/NoopInjector.php
+++ b/lib/Tumblr/StreamBuilder/StreamInjectors/NoopInjector.php
@@ -33,7 +33,7 @@ final class NoopInjector extends StreamInjector
/**
* @inheritDoc
*/
- protected function _plan_injection(int $page_size, Stream $requesting_stream, array $state = null, StreamTracer $tracer = null): InjectionPlan
+ protected function _plan_injection(int $page_size, Stream $requesting_stream, ?array $state = null, ?StreamTracer $tracer = null): InjectionPlan
{
return new InjectionPlan([], null);
}
diff --git a/lib/Tumblr/StreamBuilder/StreamInjectors/PrioritizedCompositeInjector.php b/lib/Tumblr/StreamBuilder/StreamInjectors/PrioritizedCompositeInjector.php
index 464f73b..84c77a6 100644
--- a/lib/Tumblr/StreamBuilder/StreamInjectors/PrioritizedCompositeInjector.php
+++ b/lib/Tumblr/StreamBuilder/StreamInjectors/PrioritizedCompositeInjector.php
@@ -40,8 +40,8 @@ final class PrioritizedCompositeInjector extends CompositeStreamInjector
protected function _plan_injection(
int $page_size,
Stream $requesting_stream,
- array $state = null,
- StreamTracer $tracer = null
+ ?array $state = null,
+ ?StreamTracer $tracer = null
): InjectionPlan {
if (is_null($state)) {
$state = [];
diff --git a/lib/Tumblr/StreamBuilder/StreamInjectors/SingleElementInjector.php b/lib/Tumblr/StreamBuilder/StreamInjectors/SingleElementInjector.php
index de9f4ca..d7b7099 100644
--- a/lib/Tumblr/StreamBuilder/StreamInjectors/SingleElementInjector.php
+++ b/lib/Tumblr/StreamBuilder/StreamInjectors/SingleElementInjector.php
@@ -53,8 +53,8 @@ public function __construct(InjectionAllocator $allocator, string $identity)
protected function _plan_injection(
int $page_size,
Stream $requesting_stream,
- array $state = null,
- StreamTracer $tracer = null
+ ?array $state = null,
+ ?StreamTracer $tracer = null
): InjectionPlan {
$allocate_result = $this->allocator->allocate($page_size, $state);
$slots = $allocate_result->get_allocate_output();
diff --git a/lib/Tumblr/StreamBuilder/StreamInjectors/StreamInjector.php b/lib/Tumblr/StreamBuilder/StreamInjectors/StreamInjector.php
index acb1519..27c8c41 100644
--- a/lib/Tumblr/StreamBuilder/StreamInjectors/StreamInjector.php
+++ b/lib/Tumblr/StreamBuilder/StreamInjectors/StreamInjector.php
@@ -43,8 +43,8 @@ abstract class StreamInjector extends Templatable
final public function plan_injection(
int $page_size,
Stream $requesting_stream,
- array $state = null,
- StreamTracer $tracer = null
+ ?array $state = null,
+ ?StreamTracer $tracer = null
): InjectionPlan {
$t0 = microtime(true);
if (!$this->can_inject()) {
@@ -88,8 +88,8 @@ protected function can_inject(): bool
abstract protected function _plan_injection(
int $page_size,
Stream $requesting_stream,
- array $state = null,
- StreamTracer $tracer = null
+ ?array $state = null,
+ ?StreamTracer $tracer = null
): InjectionPlan;
/**
diff --git a/lib/Tumblr/StreamBuilder/StreamRankers/CappedPostRanker.php b/lib/Tumblr/StreamBuilder/StreamRankers/CappedPostRanker.php
index 31a0745..b7ad9da 100644
--- a/lib/Tumblr/StreamBuilder/StreamRankers/CappedPostRanker.php
+++ b/lib/Tumblr/StreamBuilder/StreamRankers/CappedPostRanker.php
@@ -70,7 +70,7 @@ class CappedPostRanker extends StreamRanker
public function __construct(
User $user,
string $identity,
- bool $debug = null,
+ ?bool $debug = null,
bool $cap_desc,
int $cap,
string $ranking_context,
@@ -88,7 +88,7 @@ public function __construct(
/**
* @inheritDoc
*/
- protected function rank_inner(array $stream_elements, StreamTracer $tracer = null): array
+ protected function rank_inner(array $stream_elements, ?StreamTracer $tracer = null): array
{
if ($this->can_rank()) {
return $this->apply_capped_reranking($stream_elements, $this->debug, $this->cap_desc, $this->cap);
diff --git a/lib/Tumblr/StreamBuilder/StreamRankers/DitheringRanker.php b/lib/Tumblr/StreamBuilder/StreamRankers/DitheringRanker.php
index 28f4b0e..1b0db57 100644
--- a/lib/Tumblr/StreamBuilder/StreamRankers/DitheringRanker.php
+++ b/lib/Tumblr/StreamBuilder/StreamRankers/DitheringRanker.php
@@ -68,7 +68,7 @@ public function __construct(
/**
* @inheritDoc
*/
- protected function rank_inner(array $stream_elements, StreamTracer $tracer = null): array
+ protected function rank_inner(array $stream_elements, ?StreamTracer $tracer = null): array
{
if (empty($stream_elements)) {
return [];
diff --git a/lib/Tumblr/StreamBuilder/StreamRankers/RandomRanker.php b/lib/Tumblr/StreamBuilder/StreamRankers/RandomRanker.php
index 95288b0..1b23974 100644
--- a/lib/Tumblr/StreamBuilder/StreamRankers/RandomRanker.php
+++ b/lib/Tumblr/StreamBuilder/StreamRankers/RandomRanker.php
@@ -32,7 +32,7 @@ final class RandomRanker extends StreamRanker
/**
* @inheritDoc
*/
- protected function rank_inner(array $stream_elements, StreamTracer $tracer = null): array
+ protected function rank_inner(array $stream_elements, ?StreamTracer $tracer = null): array
{
shuffle($stream_elements);
return $stream_elements;
diff --git a/lib/Tumblr/StreamBuilder/StreamRankers/SignalFetcherStreamRanker.php b/lib/Tumblr/StreamBuilder/StreamRankers/SignalFetcherStreamRanker.php
index dbd4050..63709b1 100644
--- a/lib/Tumblr/StreamBuilder/StreamRankers/SignalFetcherStreamRanker.php
+++ b/lib/Tumblr/StreamBuilder/StreamRankers/SignalFetcherStreamRanker.php
@@ -49,7 +49,7 @@ public function __construct(SignalFetcher $signal_fetcher, string $identity)
/**
* @inheritDoc
*/
- final protected function rank_inner(array $stream_elements, StreamTracer $tracer = null): array
+ final protected function rank_inner(array $stream_elements, ?StreamTracer $tracer = null): array
{
/** @var StreamElement[] $stream_elements */
$signals = $this->signal_fetcher->fetch($stream_elements, $tracer);
diff --git a/lib/Tumblr/StreamBuilder/StreamRankers/StreamRanker.php b/lib/Tumblr/StreamBuilder/StreamRankers/StreamRanker.php
index 2f43d98..85e90de 100644
--- a/lib/Tumblr/StreamBuilder/StreamRankers/StreamRanker.php
+++ b/lib/Tumblr/StreamBuilder/StreamRankers/StreamRanker.php
@@ -41,7 +41,7 @@ abstract class StreamRanker extends Templatable
* @throws IllegalRankerException If the rank method adds or removes elements.
* Also, rethrows \Exception if some other error occurs, but PHPCBF does not want me to document this.
*/
- final public function rank(array $stream_elements, StreamTracer $tracer = null): array
+ final public function rank(array $stream_elements, ?StreamTracer $tracer = null): array
{
foreach ($stream_elements as $stream_element) {
if (!($stream_element instanceof StreamElement)) {
@@ -83,7 +83,7 @@ final public function rank(array $stream_elements, StreamTracer $tracer = null):
* @param StreamTracer|null $tracer Tracer to use for metrics and logging of ranking process.
* @return StreamElement[] Same elements as input, reranked. It is illegal to add or remove elements during this operation.
*/
- abstract protected function rank_inner(array $stream_elements, StreamTracer $tracer = null): array;
+ abstract protected function rank_inner(array $stream_elements, ?StreamTracer $tracer = null): array;
/**
* A batch pre-fetch to inflate a set of stream elements or cache data need to be used in your ranker.
diff --git a/lib/Tumblr/StreamBuilder/StreamRankers/WeightedRandomStreamRanker.php b/lib/Tumblr/StreamBuilder/StreamRankers/WeightedRandomStreamRanker.php
index 5fc2d17..d66aa42 100644
--- a/lib/Tumblr/StreamBuilder/StreamRankers/WeightedRandomStreamRanker.php
+++ b/lib/Tumblr/StreamBuilder/StreamRankers/WeightedRandomStreamRanker.php
@@ -34,7 +34,7 @@ class WeightedRandomStreamRanker extends StreamRanker
* @inheritDoc
* @psalm-suppress UndefinedDocblockClass
*/
- protected function rank_inner(array $stream_elements, StreamTracer $tracer = null): array
+ protected function rank_inner(array $stream_elements, ?StreamTracer $tracer = null): array
{
// if there are no stream elements to rank, return early
if (empty($stream_elements)) {
diff --git a/lib/Tumblr/StreamBuilder/Streams/BufferedRankedStream.php b/lib/Tumblr/StreamBuilder/Streams/BufferedRankedStream.php
index 9754bff..3b3629f 100644
--- a/lib/Tumblr/StreamBuilder/Streams/BufferedRankedStream.php
+++ b/lib/Tumblr/StreamBuilder/Streams/BufferedRankedStream.php
@@ -68,8 +68,8 @@ public function __construct(Stream $inner, StreamRanker $ranker, int $overfetch_
*/
public function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
if (is_null($cursor)) {
diff --git a/lib/Tumblr/StreamBuilder/Streams/CachedStream.php b/lib/Tumblr/StreamBuilder/Streams/CachedStream.php
index 686a4ec..69c1883 100644
--- a/lib/Tumblr/StreamBuilder/Streams/CachedStream.php
+++ b/lib/Tumblr/StreamBuilder/Streams/CachedStream.php
@@ -174,7 +174,7 @@ abstract protected function inner_cursor(?StreamCursor $cursor): ?StreamCursor;
abstract protected function _slice_result_with_cursor(
int $count,
StreamResult $inner_result,
- StreamCursor $cursor = null
+ ?StreamCursor $cursor = null
): StreamResult;
/**
diff --git a/lib/Tumblr/StreamBuilder/Streams/ChronologicalBackfillStream.php b/lib/Tumblr/StreamBuilder/Streams/ChronologicalBackfillStream.php
index c7e9fa4..ccaea75 100644
--- a/lib/Tumblr/StreamBuilder/Streams/ChronologicalBackfillStream.php
+++ b/lib/Tumblr/StreamBuilder/Streams/ChronologicalBackfillStream.php
@@ -72,8 +72,8 @@ public function __construct(
*/
protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
/** @var MultiCursor $cursor */
diff --git a/lib/Tumblr/StreamBuilder/Streams/ChronologicalRangedStream.php b/lib/Tumblr/StreamBuilder/Streams/ChronologicalRangedStream.php
index 8d8a9cb..c7ff50c 100644
--- a/lib/Tumblr/StreamBuilder/Streams/ChronologicalRangedStream.php
+++ b/lib/Tumblr/StreamBuilder/Streams/ChronologicalRangedStream.php
@@ -64,8 +64,8 @@ public function __construct(Stream $inner, string $identity, ?int $min_age = nul
*/
final protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
$now = time();
diff --git a/lib/Tumblr/StreamBuilder/Streams/ConcatenatedStream.php b/lib/Tumblr/StreamBuilder/Streams/ConcatenatedStream.php
index 678b374..3405195 100644
--- a/lib/Tumblr/StreamBuilder/Streams/ConcatenatedStream.php
+++ b/lib/Tumblr/StreamBuilder/Streams/ConcatenatedStream.php
@@ -78,8 +78,8 @@ public function getStreams(): array
*/
protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
// if this stream does not contain any stream, should return empty result
diff --git a/lib/Tumblr/StreamBuilder/Streams/CursorlessFilteredStream.php b/lib/Tumblr/StreamBuilder/Streams/CursorlessFilteredStream.php
index 841c278..3f1999d 100644
--- a/lib/Tumblr/StreamBuilder/Streams/CursorlessFilteredStream.php
+++ b/lib/Tumblr/StreamBuilder/Streams/CursorlessFilteredStream.php
@@ -120,8 +120,8 @@ public static function from_template(StreamContext $context): self
*/
protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
return $this->_filter_rec($count, $cursor, $this->retry_count, $tracer, $option);
@@ -140,7 +140,7 @@ private function _filter_rec(
int $want_count,
?StreamCursor $inner_cursor,
int $depth,
- StreamTracer $tracer = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
$fetch_count = intval(ceil($want_count * (1.0 + max(0.0, $this->overfetch_ratio))));
diff --git a/lib/Tumblr/StreamBuilder/Streams/EquivalentStreamCombiner.php b/lib/Tumblr/StreamBuilder/Streams/EquivalentStreamCombiner.php
index ca96d7a..ce6c2d8 100644
--- a/lib/Tumblr/StreamBuilder/Streams/EquivalentStreamCombiner.php
+++ b/lib/Tumblr/StreamBuilder/Streams/EquivalentStreamCombiner.php
@@ -38,8 +38,8 @@ abstract class EquivalentStreamCombiner extends Stream
*/
final protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
/** @var StreamResult $combined_result */
@@ -57,8 +57,8 @@ final protected function _enumerate(
*/
abstract protected function combine(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult;
}
diff --git a/lib/Tumblr/StreamBuilder/Streams/FilteredStream.php b/lib/Tumblr/StreamBuilder/Streams/FilteredStream.php
index f2f17df..0572b39 100644
--- a/lib/Tumblr/StreamBuilder/Streams/FilteredStream.php
+++ b/lib/Tumblr/StreamBuilder/Streams/FilteredStream.php
@@ -87,8 +87,8 @@ public function __construct(
Stream $inner,
StreamFilter $filter,
string $identity,
- int $retry_count = null,
- float $overfetch_ratio = null,
+ ?int $retry_count = null,
+ ?float $overfetch_ratio = null,
bool $skip_filters = false,
bool $slice_result = true
) {
@@ -148,8 +148,8 @@ public static function from_template(StreamContext $context): self
*/
protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
/** @var FilteredStreamCursor $cursor */
@@ -184,7 +184,7 @@ private function _filter_rec(
?StreamCursor $inner_cursor,
?StreamFilterState $filter_state,
int $depth,
- StreamTracer $tracer = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
$fetch_count = intval(ceil($want_count * (1.0 + max(0.0, $this->overfetch_ratio))));
diff --git a/lib/Tumblr/StreamBuilder/Streams/InjectedStream.php b/lib/Tumblr/StreamBuilder/Streams/InjectedStream.php
index ade3ca7..c324b4f 100644
--- a/lib/Tumblr/StreamBuilder/Streams/InjectedStream.php
+++ b/lib/Tumblr/StreamBuilder/Streams/InjectedStream.php
@@ -60,8 +60,8 @@ public function __construct(Stream $inner, StreamInjector $injector, string $ide
*/
protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
if (is_null($cursor)) {
diff --git a/lib/Tumblr/StreamBuilder/Streams/NullStream.php b/lib/Tumblr/StreamBuilder/Streams/NullStream.php
index 4abbbb5..f323b03 100644
--- a/lib/Tumblr/StreamBuilder/Streams/NullStream.php
+++ b/lib/Tumblr/StreamBuilder/Streams/NullStream.php
@@ -36,8 +36,8 @@ final class NullStream extends Stream
*/
protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
return new StreamResult(true, []);
diff --git a/lib/Tumblr/StreamBuilder/Streams/PrependedStream.php b/lib/Tumblr/StreamBuilder/Streams/PrependedStream.php
index 09a3ace..f1c3721 100644
--- a/lib/Tumblr/StreamBuilder/Streams/PrependedStream.php
+++ b/lib/Tumblr/StreamBuilder/Streams/PrependedStream.php
@@ -95,8 +95,8 @@ public function __construct(Stream $before, ?int $limit, Stream $after, string $
*/
protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
$results = $this->after->enumerate($count, $cursor, $tracer, $option);
diff --git a/lib/Tumblr/StreamBuilder/Streams/ProportionalRoundRobinStream.php b/lib/Tumblr/StreamBuilder/Streams/ProportionalRoundRobinStream.php
index c177478..1d9e91b 100644
--- a/lib/Tumblr/StreamBuilder/Streams/ProportionalRoundRobinStream.php
+++ b/lib/Tumblr/StreamBuilder/Streams/ProportionalRoundRobinStream.php
@@ -126,8 +126,8 @@ public function __construct(Stream $major_stream, array $minor_streams, array $m
*/
protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
/** @var ProportionalRoundRobinStreamCursor $cursor */
diff --git a/lib/Tumblr/StreamBuilder/Streams/ProportionalStreamCombiner.php b/lib/Tumblr/StreamBuilder/Streams/ProportionalStreamCombiner.php
index b55944f..e2a9622 100644
--- a/lib/Tumblr/StreamBuilder/Streams/ProportionalStreamCombiner.php
+++ b/lib/Tumblr/StreamBuilder/Streams/ProportionalStreamCombiner.php
@@ -123,7 +123,7 @@ private function build_mixture(array $feeds): ?ProportionalMixture
protected function combine(
int $count,
MultiCursor $cursor,
- StreamTracer $tracer = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
// current map of feed ids we can draw from
diff --git a/lib/Tumblr/StreamBuilder/Streams/RankedStream.php b/lib/Tumblr/StreamBuilder/Streams/RankedStream.php
index 879ddfa..25bba32 100644
--- a/lib/Tumblr/StreamBuilder/Streams/RankedStream.php
+++ b/lib/Tumblr/StreamBuilder/Streams/RankedStream.php
@@ -53,8 +53,8 @@ public function __construct(Stream $inner, StreamRanker $ranker, string $identit
*/
final protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
$res = $this->getInner()->enumerate($count, $cursor, $tracer, $option);
diff --git a/lib/Tumblr/StreamBuilder/Streams/SizeLimitedStream.php b/lib/Tumblr/StreamBuilder/Streams/SizeLimitedStream.php
index 63b3631..05cd3b3 100644
--- a/lib/Tumblr/StreamBuilder/Streams/SizeLimitedStream.php
+++ b/lib/Tumblr/StreamBuilder/Streams/SizeLimitedStream.php
@@ -70,8 +70,8 @@ public function __construct(Stream $stream, int $limit, string $identity)
*/
protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
if (is_null($cursor)) {
diff --git a/lib/Tumblr/StreamBuilder/Streams/Stream.php b/lib/Tumblr/StreamBuilder/Streams/Stream.php
index 885ef3d..f11ed38 100644
--- a/lib/Tumblr/StreamBuilder/Streams/Stream.php
+++ b/lib/Tumblr/StreamBuilder/Streams/Stream.php
@@ -90,8 +90,8 @@ final public function enumerate(
*/
abstract protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult;
diff --git a/lib/Tumblr/StreamBuilder/Streams/StreamCombiner.php b/lib/Tumblr/StreamBuilder/Streams/StreamCombiner.php
index 10ff769..048736d 100644
--- a/lib/Tumblr/StreamBuilder/Streams/StreamCombiner.php
+++ b/lib/Tumblr/StreamBuilder/Streams/StreamCombiner.php
@@ -39,8 +39,8 @@ abstract class StreamCombiner extends Stream
*/
final protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
if (is_null($cursor)) {
@@ -82,7 +82,7 @@ final protected function _enumerate(
abstract protected function combine(
int $count,
MultiCursor $cursor,
- StreamTracer $tracer = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult;
}
diff --git a/lib/Tumblr/StreamBuilder/Streams/StreamMixer.php b/lib/Tumblr/StreamBuilder/Streams/StreamMixer.php
index 23313dd..a3c4849 100644
--- a/lib/Tumblr/StreamBuilder/Streams/StreamMixer.php
+++ b/lib/Tumblr/StreamBuilder/Streams/StreamMixer.php
@@ -61,8 +61,8 @@ public function __construct(StreamInjector $injector, string $identity)
*/
final protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
if (is_null($cursor)) {
diff --git a/lib/Tumblr/StreamBuilder/Streams/TemplateReferenceStream.php b/lib/Tumblr/StreamBuilder/Streams/TemplateReferenceStream.php
index 2542128..fe69569 100644
--- a/lib/Tumblr/StreamBuilder/Streams/TemplateReferenceStream.php
+++ b/lib/Tumblr/StreamBuilder/Streams/TemplateReferenceStream.php
@@ -63,8 +63,8 @@ public static function from_template(StreamContext $context) // phpcs:ignore PSR
*/
protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
return $this->getInner()->enumerate($count, $cursor, $tracer, $option);
diff --git a/tests/mock/tumblr/StreamBuilder/FencepostRanking/TestingFencepostProvider.php b/tests/mock/tumblr/StreamBuilder/FencepostRanking/TestingFencepostProvider.php
index 310825f..b29a706 100644
--- a/tests/mock/tumblr/StreamBuilder/FencepostRanking/TestingFencepostProvider.php
+++ b/tests/mock/tumblr/StreamBuilder/FencepostRanking/TestingFencepostProvider.php
@@ -44,7 +44,7 @@ final class TestingFencepostProvider extends FencepostProvider
*/
public function __construct(
string $fence_id,
- int $latest_timestamp_ms = null,
+ ?int $latest_timestamp_ms = null,
array $fenceposts = []
) {
$this->fence_id = $fence_id;
diff --git a/tests/mock/tumblr/StreamBuilder/StreamRankers/DummyStreamRanker.php b/tests/mock/tumblr/StreamBuilder/StreamRankers/DummyStreamRanker.php
index 120d81b..71c7e19 100644
--- a/tests/mock/tumblr/StreamBuilder/StreamRankers/DummyStreamRanker.php
+++ b/tests/mock/tumblr/StreamBuilder/StreamRankers/DummyStreamRanker.php
@@ -33,7 +33,7 @@ final class DummyStreamRanker extends StreamRanker
/**
* @inheritDoc
*/
- protected function rank_inner(array $stream_elements, StreamTracer $tracer = null): array
+ protected function rank_inner(array $stream_elements, ?StreamTracer $tracer = null): array
{
return $stream_elements;
}
diff --git a/tests/mock/tumblr/StreamBuilder/StreamRankers/TestingRankableChronoStreamElementRanker.php b/tests/mock/tumblr/StreamBuilder/StreamRankers/TestingRankableChronoStreamElementRanker.php
index c73254c..41f6388 100644
--- a/tests/mock/tumblr/StreamBuilder/StreamRankers/TestingRankableChronoStreamElementRanker.php
+++ b/tests/mock/tumblr/StreamBuilder/StreamRankers/TestingRankableChronoStreamElementRanker.php
@@ -34,7 +34,7 @@ final class TestingRankableChronoStreamElementRanker extends StreamRanker
/**
* @inheritDoc
*/
- protected function rank_inner(array $stream_elements, StreamTracer $tracer = null): array
+ protected function rank_inner(array $stream_elements, ?StreamTracer $tracer = null): array
{
usort($stream_elements, function (TestingRankableChronoStreamElement $a, TestingRankableChronoStreamElement $b) {
return $b->get_rank_ordinal() <=> $a->get_rank_ordinal();
diff --git a/tests/mock/tumblr/StreamBuilder/Streams/TestingRankableChronoStream.php b/tests/mock/tumblr/StreamBuilder/Streams/TestingRankableChronoStream.php
index b15087b..993bf17 100644
--- a/tests/mock/tumblr/StreamBuilder/Streams/TestingRankableChronoStream.php
+++ b/tests/mock/tumblr/StreamBuilder/Streams/TestingRankableChronoStream.php
@@ -57,8 +57,8 @@ public function __construct($identity, array $elements)
*/
protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
if (is_null($cursor)) {
diff --git a/tests/unit/Tumblr/StreamBuilder/FencepostRanking/FencepostRankedStreamTest.php b/tests/unit/Tumblr/StreamBuilder/FencepostRanking/FencepostRankedStreamTest.php
index dcbc9f6..8fc2dd5 100644
--- a/tests/unit/Tumblr/StreamBuilder/FencepostRanking/FencepostRankedStreamTest.php
+++ b/tests/unit/Tumblr/StreamBuilder/FencepostRanking/FencepostRankedStreamTest.php
@@ -92,7 +92,7 @@ private function create_fencepost_ranked_stream(
array $inner_elements,
int $head_count,
bool $rank_seed,
- int $latest_fencepost_timestamp_ms = null,
+ ?int $latest_fencepost_timestamp_ms = null,
array $next_timestamps = [],
array $fenceposts = []
) {
@@ -123,7 +123,7 @@ private function check_traversal(
?FencepostCursor $in_cursor,
bool $should_exhaust,
array $expected_elements,
- FencepostCursor $expected_cursor = null
+ ?FencepostCursor $expected_cursor = null
) {
$res = $stream->enumerate($count, $in_cursor);
$this->assertEquals($should_exhaust, $res->is_exhaustive());
diff --git a/tests/unit/Tumblr/StreamBuilder/StreamCursors/BufferedCursorTest.php b/tests/unit/Tumblr/StreamBuilder/StreamCursors/BufferedCursorTest.php
index b76b41d..dcc8d00 100644
--- a/tests/unit/Tumblr/StreamBuilder/StreamCursors/BufferedCursorTest.php
+++ b/tests/unit/Tumblr/StreamBuilder/StreamCursors/BufferedCursorTest.php
@@ -44,7 +44,7 @@ class BufferedCursorTest extends \PHPUnit\Framework\TestCase
* @param StreamCursor|null $cursor The cursor in the element.
* @return StreamElement
*/
- private function make_mock_element(string $provider_identity, StreamCursor $cursor = null): StreamElement
+ private function make_mock_element(string $provider_identity, ?StreamCursor $cursor = null): StreamElement
{
$m = $this->getMockBuilder(StreamElement::class)
->setConstructorArgs([ $provider_identity, $cursor ])
diff --git a/tests/unit/Tumblr/StreamBuilder/StreamCursors/FilteredStreamCursorTest.php b/tests/unit/Tumblr/StreamBuilder/StreamCursors/FilteredStreamCursorTest.php
index fd2321e..d122575 100644
--- a/tests/unit/Tumblr/StreamBuilder/StreamCursors/FilteredStreamCursorTest.php
+++ b/tests/unit/Tumblr/StreamBuilder/StreamCursors/FilteredStreamCursorTest.php
@@ -190,7 +190,7 @@ public function provider_with_filter_state()
* @param StreamFilterState $state StreamFilterState.
* @param StreamFilterState $expected_state The expected state.
*/
- public function test_with_filter_state(StreamFilterState $state = null, StreamFilterState $expected_state = null)
+ public function test_with_filter_state(?StreamFilterState $state = null, ?StreamFilterState $expected_state = null)
{
$cursor = new FilteredStreamCursor();
$cursor = $cursor->with_filter_state($state);
diff --git a/tests/unit/Tumblr/StreamBuilder/StreamInjectors/StreamInjectorTest.php b/tests/unit/Tumblr/StreamBuilder/StreamInjectors/StreamInjectorTest.php
index 6cb3c8a..37042f6 100644
--- a/tests/unit/Tumblr/StreamBuilder/StreamInjectors/StreamInjectorTest.php
+++ b/tests/unit/Tumblr/StreamBuilder/StreamInjectors/StreamInjectorTest.php
@@ -79,8 +79,8 @@ public function plan_injection_provider()
protected function _plan_injection(
int $page_size,
Stream $requesting_stream,
- array $state = null,
- StreamTracer $tracer = null
+ ?array $state = null,
+ ?StreamTracer $tracer = null
): InjectionPlan {
return InjectionPlan::create_empty_plan();
}
diff --git a/tests/unit/Tumblr/StreamBuilder/Streams/ConcatenatedStreamTest.php b/tests/unit/Tumblr/StreamBuilder/Streams/ConcatenatedStreamTest.php
index ee045aa..9b9ef39 100644
--- a/tests/unit/Tumblr/StreamBuilder/Streams/ConcatenatedStreamTest.php
+++ b/tests/unit/Tumblr/StreamBuilder/Streams/ConcatenatedStreamTest.php
@@ -98,7 +98,7 @@ protected function setUp(): void
$this->stream_cursor2->expects($this->any())->method('_can_combine_with')->willReturn(true);
// callback for enumerate function, which will return StreamResult based on passed in paramaters.
// Because enumerate function is called by ConcatenatedStream so we can't do static return mock here.
- $enumerate_callback = function ($count, StreamCursor $cursor = null) {
+ $enumerate_callback = function ($count, ?StreamCursor $cursor = null) {
$offset = $cursor == null ? 0 : ($cursor == $this->stream_cursor1 ? 1 : 2);
return new StreamResult($offset + $count >= 2, array_slice([$this->stream_element1, $this->stream_element2], $offset, $count));
};
diff --git a/tests/unit/Tumblr/StreamBuilder/Streams/PrependedStreamTest.php b/tests/unit/Tumblr/StreamBuilder/Streams/PrependedStreamTest.php
index dfa0c20..793fcae 100644
--- a/tests/unit/Tumblr/StreamBuilder/Streams/PrependedStreamTest.php
+++ b/tests/unit/Tumblr/StreamBuilder/Streams/PrependedStreamTest.php
@@ -91,7 +91,7 @@ protected function setUp(): void
$this->stream_cursor2->expects($this->any())->method('_can_combine_with')->willReturn(true);
// callback for enumerate function, which will return StreamResult based on passed in parameters.
// Because enumerate function is called by ConcatenatedStream so we can't do static return mock here.
- $enumerate_callback = function ($count, StreamCursor $cursor = null) {
+ $enumerate_callback = function ($count, ?StreamCursor $cursor = null) {
$offset = $cursor == null ? 0 : ($cursor === $this->stream_cursor1 ? 1 : 2);
return new StreamResult(
$offset + $count >= 2,
diff --git a/tests/unit/Tumblr/StreamBuilder/Streams/ProportionalRoundRobinStreamTest.php b/tests/unit/Tumblr/StreamBuilder/Streams/ProportionalRoundRobinStreamTest.php
index dd6018b..80a4abd 100644
--- a/tests/unit/Tumblr/StreamBuilder/Streams/ProportionalRoundRobinStreamTest.php
+++ b/tests/unit/Tumblr/StreamBuilder/Streams/ProportionalRoundRobinStreamTest.php
@@ -496,8 +496,8 @@ public static function from_template(StreamContext $context): ?self
*/
protected function _enumerate(
int $count,
- StreamCursor $cursor = null,
- StreamTracer $tracer = null,
+ ?StreamCursor $cursor = null,
+ ?StreamTracer $tracer = null,
?EnumerationOptions $option = null
): StreamResult {
$slice = array_slice($this->elements, is_null($cursor) ? 0 : $cursor->index + 1, $count);