Skip to content

Commit d418762

Browse files
committed
Win For Scrutinizer
It pointed out a problem that I would have thought should result in test failure. Code corrected, and documentation updated to describe the unexpected behavior.
1 parent d46b7b3 commit d418762

File tree

2 files changed

+14
-17
lines changed

2 files changed

+14
-17
lines changed

docs/topics/accessing-cells.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ $spreadsheet->getActiveSheet()
4242
If you make a call to `getCell()`, and the cell doesn't already exist, then
4343
PhpSpreadsheet will create that cell for you.
4444

45-
### BEWARE: Cells assigned to variables as a Detached Reference
45+
### BEWARE: Cells and Styles assigned to variables as a Detached Reference
4646

4747
As an "in-memory" model, PHPSpreadsheet can be very demanding of memory,
4848
particularly when working with large spreadsheets. One technique used to
@@ -54,6 +54,7 @@ While this is not normally an issue, it can become significant
5454
if you assign the result of a call to `getCell()` to a variable. Any
5555
subsequent calls to retrieve other cells will change that pointer, although
5656
the cell object will still retain its data values.
57+
This is also true when assigning a variable to the result of `getStyle()`.
5758

5859
What does this mean? Consider the following code:
5960

tests/PhpSpreadsheetTests/Writer/Xlsx/ExplicitStyle0Test.php

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,12 @@ public function testWithoutExplicitStyle0(): void
4141
$reader = new XlsxReader();
4242
$spreadsheet2 = $reader->load($this->outputFile);
4343
$sheet2 = $spreadsheet2->getActiveSheet();
44-
$styleA1 = $sheet2->getStyle('A1');
45-
self::assertTrue($styleA1->getFont()->getBold());
46-
self::assertFalse($styleA1->getFont()->getItalic());
47-
self::assertSame(Alignment::HORIZONTAL_CENTER, $styleA1->getAlignment()->getHorizontal());
48-
$styleA2 = $sheet2->getStyle('A2');
49-
self::assertTrue($styleA1->getFont()->getBold());
50-
self::assertTrue($styleA1->getFont()->getItalic());
51-
self::assertSame(Alignment::HORIZONTAL_CENTER, $styleA1->getAlignment()->getHorizontal());
44+
self::assertTrue($sheet2->getStyle('A1')->getFont()->getBold());
45+
self::assertFalse($sheet2->getStyle('A1')->getFont()->getItalic());
46+
self::assertSame(Alignment::HORIZONTAL_CENTER, $sheet2->getStyle('A1')->getAlignment()->getHorizontal());
47+
self::assertTrue($sheet2->getStyle('A2')->getFont()->getBold());
48+
self::assertTrue($sheet2->getStyle('A2')->getFont()->getItalic());
49+
self::assertSame(Alignment::HORIZONTAL_CENTER, $sheet2->getStyle('A2')->getAlignment()->getHorizontal());
5250
$spreadsheet2->disconnectWorksheets();
5351

5452
$file = 'zip://';
@@ -82,14 +80,12 @@ public function testWithExplicitStyle0(): void
8280
$reader = new XlsxReader();
8381
$spreadsheet2 = $reader->load($this->outputFile);
8482
$sheet2 = $spreadsheet2->getActiveSheet();
85-
$styleA1 = $sheet2->getStyle('A1');
86-
self::assertTrue($styleA1->getFont()->getBold());
87-
self::assertFalse($styleA1->getFont()->getItalic());
88-
self::assertSame(Alignment::HORIZONTAL_CENTER, $styleA1->getAlignment()->getHorizontal());
89-
$styleA2 = $sheet2->getStyle('A2');
90-
self::assertTrue($styleA1->getFont()->getBold());
91-
self::assertTrue($styleA1->getFont()->getItalic());
92-
self::assertSame(Alignment::HORIZONTAL_CENTER, $styleA1->getAlignment()->getHorizontal());
83+
self::assertTrue($sheet2->getStyle('A1')->getFont()->getBold());
84+
self::assertFalse($sheet2->getStyle('A1')->getFont()->getItalic());
85+
self::assertSame(Alignment::HORIZONTAL_CENTER, $sheet2->getStyle('A1')->getAlignment()->getHorizontal());
86+
self::assertTrue($sheet2->getStyle('A2')->getFont()->getBold());
87+
self::assertTrue($sheet2->getStyle('A2')->getFont()->getItalic());
88+
self::assertSame(Alignment::HORIZONTAL_CENTER, $sheet2->getStyle('A2')->getAlignment()->getHorizontal());
9389
$spreadsheet2->disconnectWorksheets();
9490

9591
$file = 'zip://';

0 commit comments

Comments
 (0)