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.
This commit is contained in:
oleibman
2024-02-29 12:18:34 -08:00
parent d46b7b3e9d
commit d418762a33
2 changed files with 14 additions and 17 deletions
+2 -1
View File
@@ -42,7 +42,7 @@ $spreadsheet->getActiveSheet()
If you make a call to `getCell()`, and the cell doesn't already exist, then
PhpSpreadsheet will create that cell for you.
### BEWARE: Cells assigned to variables as a Detached Reference
### BEWARE: Cells and Styles assigned to variables as a Detached Reference
As an "in-memory" model, PHPSpreadsheet can be very demanding of memory,
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
if you assign the result of a call to `getCell()` to a variable. Any
subsequent calls to retrieve other cells will change that pointer, although
the cell object will still retain its data values.
This is also true when assigning a variable to the result of `getStyle()`.
What does this mean? Consider the following code:
@@ -41,14 +41,12 @@ class ExplicitStyle0Test extends TestCase
$reader = new XlsxReader();
$spreadsheet2 = $reader->load($this->outputFile);
$sheet2 = $spreadsheet2->getActiveSheet();
$styleA1 = $sheet2->getStyle('A1');
self::assertTrue($styleA1->getFont()->getBold());
self::assertFalse($styleA1->getFont()->getItalic());
self::assertSame(Alignment::HORIZONTAL_CENTER, $styleA1->getAlignment()->getHorizontal());
$styleA2 = $sheet2->getStyle('A2');
self::assertTrue($styleA1->getFont()->getBold());
self::assertTrue($styleA1->getFont()->getItalic());
self::assertSame(Alignment::HORIZONTAL_CENTER, $styleA1->getAlignment()->getHorizontal());
self::assertTrue($sheet2->getStyle('A1')->getFont()->getBold());
self::assertFalse($sheet2->getStyle('A1')->getFont()->getItalic());
self::assertSame(Alignment::HORIZONTAL_CENTER, $sheet2->getStyle('A1')->getAlignment()->getHorizontal());
self::assertTrue($sheet2->getStyle('A2')->getFont()->getBold());
self::assertTrue($sheet2->getStyle('A2')->getFont()->getItalic());
self::assertSame(Alignment::HORIZONTAL_CENTER, $sheet2->getStyle('A2')->getAlignment()->getHorizontal());
$spreadsheet2->disconnectWorksheets();
$file = 'zip://';
@@ -82,14 +80,12 @@ class ExplicitStyle0Test extends TestCase
$reader = new XlsxReader();
$spreadsheet2 = $reader->load($this->outputFile);
$sheet2 = $spreadsheet2->getActiveSheet();
$styleA1 = $sheet2->getStyle('A1');
self::assertTrue($styleA1->getFont()->getBold());
self::assertFalse($styleA1->getFont()->getItalic());
self::assertSame(Alignment::HORIZONTAL_CENTER, $styleA1->getAlignment()->getHorizontal());
$styleA2 = $sheet2->getStyle('A2');
self::assertTrue($styleA1->getFont()->getBold());
self::assertTrue($styleA1->getFont()->getItalic());
self::assertSame(Alignment::HORIZONTAL_CENTER, $styleA1->getAlignment()->getHorizontal());
self::assertTrue($sheet2->getStyle('A1')->getFont()->getBold());
self::assertFalse($sheet2->getStyle('A1')->getFont()->getItalic());
self::assertSame(Alignment::HORIZONTAL_CENTER, $sheet2->getStyle('A1')->getAlignment()->getHorizontal());
self::assertTrue($sheet2->getStyle('A2')->getFont()->getBold());
self::assertTrue($sheet2->getStyle('A2')->getFont()->getItalic());
self::assertSame(Alignment::HORIZONTAL_CENTER, $sheet2->getStyle('A2')->getAlignment()->getHorizontal());
$spreadsheet2->disconnectWorksheets();
$file = 'zip://';