Null Passed to AutoFilter SetRange (#2454)

* Null Passed to AutoFilter SetRange

Fix #2281. Delete auto filter set range to null, but should set it to null string. This causes a deprecation warning in Php8.1.

* Constructor Call Also Sets Range to Null

Should set it to null string.
This commit is contained in:
oleibman 2021-12-25 08:45:10 -08:00 committed by GitHub
parent 707b7d584e
commit f2b2f07ec3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 24 deletions

View File

@ -6065,16 +6065,6 @@ parameters:
count: 1 count: 1
path: src/PhpSpreadsheet/Worksheet/Worksheet.php path: src/PhpSpreadsheet/Worksheet/Worksheet.php
-
message: "#^Parameter \\#1 \\$range of class PhpOffice\\\\PhpSpreadsheet\\\\Worksheet\\\\AutoFilter constructor expects string, null given\\.$#"
count: 1
path: src/PhpSpreadsheet/Worksheet/Worksheet.php
-
message: "#^Parameter \\#1 \\$range of method PhpOffice\\\\PhpSpreadsheet\\\\Worksheet\\\\AutoFilter\\:\\:setRange\\(\\) expects string, null given\\.$#"
count: 1
path: src/PhpSpreadsheet/Worksheet/Worksheet.php
- -
message: "#^Parameter \\#1 \\$range of static method PhpOffice\\\\PhpSpreadsheet\\\\Cell\\\\Coordinate\\:\\:rangeDimension\\(\\) expects string, string\\|false given\\.$#" message: "#^Parameter \\#1 \\$range of static method PhpOffice\\\\PhpSpreadsheet\\\\Cell\\\\Coordinate\\:\\:rangeDimension\\(\\) expects string, string\\|false given\\.$#"
count: 1 count: 1

View File

@ -50,10 +50,8 @@ class AutoFilter
/** /**
* Create a new AutoFilter. * Create a new AutoFilter.
*
* @param string $range Cell range (i.e. A1:E10)
*/ */
public function __construct($range = '', ?Worksheet $worksheet = null) public function __construct(string $range = '', ?Worksheet $worksheet = null)
{ {
$this->range = $range; $this->range = $range;
$this->workSheet = $worksheet; $this->workSheet = $worksheet;
@ -93,13 +91,9 @@ class AutoFilter
} }
/** /**
* Set AutoFilter Range. * Set AutoFilter Cell Range.
*
* @param string $range Cell range (i.e. A1:E10)
*
* @return $this
*/ */
public function setRange($range) public function setRange(string $range): self
{ {
$this->evaluated = false; $this->evaluated = false;
// extract coordinate // extract coordinate

View File

@ -371,7 +371,7 @@ class Worksheet implements IComparable
$this->defaultRowDimension = new RowDimension(null); $this->defaultRowDimension = new RowDimension(null);
// Default column dimension // Default column dimension
$this->defaultColumnDimension = new ColumnDimension(null); $this->defaultColumnDimension = new ColumnDimension(null);
$this->autoFilter = new AutoFilter(null, $this); $this->autoFilter = new AutoFilter('', $this);
} }
/** /**
@ -1914,12 +1914,10 @@ class Worksheet implements IComparable
/** /**
* Remove autofilter. * Remove autofilter.
*
* @return $this
*/ */
public function removeAutoFilter() public function removeAutoFilter(): self
{ {
$this->autoFilter->setRange(null); $this->autoFilter->setRange('');
return $this; return $this;
} }

View File

@ -0,0 +1,16 @@
<?php
namespace PhpOffice\PhpSpreadsheetTests\Worksheet\AutoFilter;
class DeleteAutoFilterTest extends SetupTeardown
{
public function testDelete(): void
{
// Issue 2281 - deprecation in PHP81 when deleting filter
$sheet = $this->getSheet();
$autoFilter = $sheet->getAutoFilter();
$autoFilter->setRange('H2:O256');
$sheet->removeAutoFilter();
self::assertSame('', $sheet->getAutoFilter()->getRange());
}
}