Skip to content

Commit 6ed0b4f

Browse files
committed
PHP 8.1 | WP_CLI\Iterators\CSV: fix "missing return type" deprecation warnings
As of PHP 8.1, PHP started throwing deprecation warnings along the lines of: ``` Deprecated: Return type of [CLASS]::[METHOD]() should either be compatible with [PHP NATIVE INTERFACE]::[METHOD](): [TYPE], or the #[ReturnTypeWillChange] attribute should be used to temporarily suppress the notice ``` These type of deprecation notices relate to the [Return types for internal methods RFC](https://wiki.php.net/rfc/internal_method_return_types) in PHP 8.1. Basically, as of PHP 8.1, these methods in classes which implement PHP native interfaces are expected to have a return type declared. The return type can be the same as used in PHP itself or a more specific type. This complies with the Liskov principle of covariance, which allows the return type of a child overloaded method to be more specific than that of the parent. As this package still has a minimum PHP requirement of PHP 5.6, the return type (PHP 7.0 feature) can not be added, so I've added the attribute instead. While attributes are a PHP 8.0 feature only, due to the syntax choice for `#[]`, they will ignored in PHP < 8 and can be safely added. Note: these deprecations were visible in the test summary, but the tests - as they currently are - are not set up correctly to fail builds on deprecation notices, which is probably why this went unnoticed.
1 parent 772275d commit 6ed0b4f

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

php/WP_CLI/Iterators/CSV.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Countable;
66
use Iterator;
7+
use ReturnTypeWillChange;
78
use SplFileObject;
89
use WP_CLI;
910

@@ -33,6 +34,7 @@ public function __construct( $filename, $delimiter = ',' ) {
3334
$this->delimiter = $delimiter;
3435
}
3536

37+
#[ReturnTypeWillChange]
3638
public function rewind() {
3739
rewind( $this->file_pointer );
3840

@@ -42,14 +44,17 @@ public function rewind() {
4244
$this->next();
4345
}
4446

47+
#[ReturnTypeWillChange]
4548
public function current() {
4649
return $this->current_element;
4750
}
4851

52+
#[ReturnTypeWillChange]
4953
public function key() {
5054
return $this->current_index;
5155
}
5256

57+
#[ReturnTypeWillChange]
5358
public function next() {
5459
$this->current_element = false;
5560

@@ -76,12 +81,14 @@ public function next() {
7681
}
7782
}
7883

84+
#[ReturnTypeWillChange]
7985
public function count() {
8086
$file = new SplFileObject( $this->filename, 'r' );
8187
$file->seek( PHP_INT_MAX );
8288
return $file->key() + 1;
8389
}
8490

91+
#[ReturnTypeWillChange]
8592
public function valid() {
8693
return is_array( $this->current_element );
8794
}

0 commit comments

Comments
 (0)