Skip to content

Commit f2b2f07

Browse files
authored
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.
1 parent 707b7d5 commit f2b2f07

File tree

4 files changed

+22
-24
lines changed

4 files changed

+22
-24
lines changed

phpstan-baseline.neon

-10
Original file line numberDiff line numberDiff line change
@@ -6065,16 +6065,6 @@ parameters:
60656065
count: 1
60666066
path: src/PhpSpreadsheet/Worksheet/Worksheet.php
60676067

6068-
-
6069-
message: "#^Parameter \\#1 \\$range of class PhpOffice\\\\PhpSpreadsheet\\\\Worksheet\\\\AutoFilter constructor expects string, null given\\.$#"
6070-
count: 1
6071-
path: src/PhpSpreadsheet/Worksheet/Worksheet.php
6072-
6073-
-
6074-
message: "#^Parameter \\#1 \\$range of method PhpOffice\\\\PhpSpreadsheet\\\\Worksheet\\\\AutoFilter\\:\\:setRange\\(\\) expects string, null given\\.$#"
6075-
count: 1
6076-
path: src/PhpSpreadsheet/Worksheet/Worksheet.php
6077-
60786068
-
60796069
message: "#^Parameter \\#1 \\$range of static method PhpOffice\\\\PhpSpreadsheet\\\\Cell\\\\Coordinate\\:\\:rangeDimension\\(\\) expects string, string\\|false given\\.$#"
60806070
count: 1

src/PhpSpreadsheet/Worksheet/AutoFilter.php

+3-9
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,8 @@ public function setEvaluated(bool $value): void
5050

5151
/**
5252
* Create a new AutoFilter.
53-
*
54-
* @param string $range Cell range (i.e. A1:E10)
5553
*/
56-
public function __construct($range = '', ?Worksheet $worksheet = null)
54+
public function __construct(string $range = '', ?Worksheet $worksheet = null)
5755
{
5856
$this->range = $range;
5957
$this->workSheet = $worksheet;
@@ -93,13 +91,9 @@ public function getRange()
9391
}
9492

9593
/**
96-
* Set AutoFilter Range.
97-
*
98-
* @param string $range Cell range (i.e. A1:E10)
99-
*
100-
* @return $this
94+
* Set AutoFilter Cell Range.
10195
*/
102-
public function setRange($range)
96+
public function setRange(string $range): self
10397
{
10498
$this->evaluated = false;
10599
// extract coordinate

src/PhpSpreadsheet/Worksheet/Worksheet.php

+3-5
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ public function __construct(?Spreadsheet $parent = null, $title = 'Worksheet')
371371
$this->defaultRowDimension = new RowDimension(null);
372372
// Default column dimension
373373
$this->defaultColumnDimension = new ColumnDimension(null);
374-
$this->autoFilter = new AutoFilter(null, $this);
374+
$this->autoFilter = new AutoFilter('', $this);
375375
}
376376

377377
/**
@@ -1914,12 +1914,10 @@ public function setAutoFilterByColumnAndRow($columnIndex1, $row1, $columnIndex2,
19141914

19151915
/**
19161916
* Remove autofilter.
1917-
*
1918-
* @return $this
19191917
*/
1920-
public function removeAutoFilter()
1918+
public function removeAutoFilter(): self
19211919
{
1922-
$this->autoFilter->setRange(null);
1920+
$this->autoFilter->setRange('');
19231921

19241922
return $this;
19251923
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
namespace PhpOffice\PhpSpreadsheetTests\Worksheet\AutoFilter;
4+
5+
class DeleteAutoFilterTest extends SetupTeardown
6+
{
7+
public function testDelete(): void
8+
{
9+
// Issue 2281 - deprecation in PHP81 when deleting filter
10+
$sheet = $this->getSheet();
11+
$autoFilter = $sheet->getAutoFilter();
12+
$autoFilter->setRange('H2:O256');
13+
$sheet->removeAutoFilter();
14+
self::assertSame('', $sheet->getAutoFilter()->getRange());
15+
}
16+
}

0 commit comments

Comments
 (0)