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:
parent
707b7d584e
commit
f2b2f07ec3
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue