Phpstan Baseline < 4000 Lines Part 1 (#3023)

A lot of easily fixed problems throughout Writer/Xlsx/*, mostly supplying int rather than string as input to WriteAttribute/WriteElement. There are, in fact, so many opportunities, that I will split it over 2 or 3 PRs. But this first one will get Phpstan baseline down to the goal on its own.

Some of the other problems are also easily fixed. In particular, the docBlocks in Style/ConditionalFormatting/ConditionalDataBar do not allow for null values, and should.
This commit is contained in:
oleibman 2022-08-29 22:15:50 -07:00 committed by GitHub
parent 026f699a65
commit 9eb5e7e976
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 71 additions and 169 deletions

View File

@ -3810,31 +3810,11 @@ parameters:
count: 1 count: 1
path: src/PhpSpreadsheet/Writer/Xlsx.php path: src/PhpSpreadsheet/Writer/Xlsx.php
-
message: "#^Parameter \\#1 \\$string of function substr expects string, int given\\.$#"
count: 1
path: src/PhpSpreadsheet/Writer/Xlsx/Comments.php
-
message: "#^Parameter \\#2 \\$content of method XMLWriter\\:\\:writeElement\\(\\) expects string\\|null, int given\\.$#"
count: 2
path: src/PhpSpreadsheet/Writer/Xlsx/Comments.php
- -
message: "#^Expression on left side of \\?\\? is not nullable\\.$#" message: "#^Expression on left side of \\?\\? is not nullable\\.$#"
count: 1 count: 1
path: src/PhpSpreadsheet/Writer/Xlsx/DefinedNames.php path: src/PhpSpreadsheet/Writer/Xlsx/DefinedNames.php
-
message: "#^Parameter \\#2 \\$content of method XMLWriter\\:\\:writeElement\\(\\) expects string\\|null, int given\\.$#"
count: 1
path: src/PhpSpreadsheet/Writer/Xlsx/DocProps.php
-
message: "#^Parameter \\#2 \\$value of method XMLWriter\\:\\:writeAttribute\\(\\) expects string, int given\\.$#"
count: 2
path: src/PhpSpreadsheet/Writer/Xlsx/DocProps.php
- -
message: "#^Method PhpOffice\\\\PhpSpreadsheet\\\\Writer\\\\Xlsx\\\\Rels\\:\\:writeUnparsedRelationship\\(\\) has parameter \\$relationship with no type specified\\.$#" message: "#^Method PhpOffice\\\\PhpSpreadsheet\\\\Writer\\\\Xlsx\\\\Rels\\:\\:writeUnparsedRelationship\\(\\) has parameter \\$relationship with no type specified\\.$#"
count: 1 count: 1
@ -3999,74 +3979,3 @@ parameters:
message: "#^Result of \\|\\| is always true\\.$#" message: "#^Result of \\|\\| is always true\\.$#"
count: 1 count: 1
path: src/PhpSpreadsheet/Writer/Xlsx/Style.php path: src/PhpSpreadsheet/Writer/Xlsx/Style.php
-
message: "#^Parameter \\#2 \\$value of method XMLWriter\\:\\:writeAttribute\\(\\) expects string, int given\\.$#"
count: 7
path: src/PhpSpreadsheet/Writer/Xlsx/Workbook.php
-
message: "#^Expression on left side of \\?\\? is not nullable\\.$#"
count: 1
path: src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php
-
message: "#^If condition is always true\\.$#"
count: 6
path: src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php
-
message: "#^Method PhpOffice\\\\PhpSpreadsheet\\\\Writer\\\\Xlsx\\\\Worksheet\\:\\:writeAttributeIf\\(\\) has parameter \\$condition with no type specified\\.$#"
count: 1
path: src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php
-
message: "#^Method PhpOffice\\\\PhpSpreadsheet\\\\Writer\\\\Xlsx\\\\Worksheet\\:\\:writeDataBarElements\\(\\) has parameter \\$dataBar with no type specified\\.$#"
count: 1
path: src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php
-
message: "#^Method PhpOffice\\\\PhpSpreadsheet\\\\Writer\\\\Xlsx\\\\Worksheet\\:\\:writeElementIf\\(\\) has parameter \\$condition with no type specified\\.$#"
count: 1
path: src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php
-
message: "#^Parameter \\#2 \\$content of method XMLWriter\\:\\:writeElement\\(\\) expects string\\|null, int\\|string given\\.$#"
count: 1
path: src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php
-
message: "#^Parameter \\#2 \\$value of method XMLWriter\\:\\:writeAttribute\\(\\) expects string, int given\\.$#"
count: 15
path: src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php
-
message: "#^Parameter \\#2 \\$value of method XMLWriter\\:\\:writeAttribute\\(\\) expects string, int\\<0, max\\> given\\.$#"
count: 3
path: src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php
-
message: "#^Parameter \\#2 \\$value of method XMLWriter\\:\\:writeAttribute\\(\\) expects string, int\\<1, max\\> given\\.$#"
count: 9
path: src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php
-
message: "#^Parameter \\#2 \\$value of method XMLWriter\\:\\:writeAttribute\\(\\) expects string, int\\|null given\\.$#"
count: 1
path: src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php
-
message: "#^Parameter \\#2 \\$value of method XMLWriter\\:\\:writeAttribute\\(\\) expects string, string\\|null given\\.$#"
count: 1
path: src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php
-
message: "#^Parameter \\#3 \\$stringTable of method PhpOffice\\\\PhpSpreadsheet\\\\Writer\\\\Xlsx\\\\Worksheet\\:\\:writeSheetData\\(\\) expects array\\<string\\>, array\\<string\\>\\|null given\\.$#"
count: 1
path: src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php
-
message: "#^Parameter \\#4 \\$val of static method PhpOffice\\\\PhpSpreadsheet\\\\Writer\\\\Xlsx\\\\Worksheet\\:\\:writeAttributeIf\\(\\) expects string, int given\\.$#"
count: 1
path: src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php

View File

@ -11,10 +11,10 @@ class ConditionalDataBar
/** <dataBar> children */ /** <dataBar> children */
/** @var ConditionalFormatValueObject */ /** @var ?ConditionalFormatValueObject */
private $minimumConditionalFormatValueObject; private $minimumConditionalFormatValueObject;
/** @var ConditionalFormatValueObject */ /** @var ?ConditionalFormatValueObject */
private $maximumConditionalFormatValueObject; private $maximumConditionalFormatValueObject;
/** @var string */ /** @var string */
@ -22,7 +22,7 @@ class ConditionalDataBar
/** <extLst> */ /** <extLst> */
/** @var ConditionalFormattingRuleExtension */ /** @var ?ConditionalFormattingRuleExtension */
private $conditionalFormattingRuleExt; private $conditionalFormattingRuleExt;
/** /**
@ -43,10 +43,7 @@ class ConditionalDataBar
return $this; return $this;
} }
/** public function getMinimumConditionalFormatValueObject(): ?ConditionalFormatValueObject
* @return ConditionalFormatValueObject
*/
public function getMinimumConditionalFormatValueObject()
{ {
return $this->minimumConditionalFormatValueObject; return $this->minimumConditionalFormatValueObject;
} }
@ -58,10 +55,7 @@ class ConditionalDataBar
return $this; return $this;
} }
/** public function getMaximumConditionalFormatValueObject(): ?ConditionalFormatValueObject
* @return ConditionalFormatValueObject
*/
public function getMaximumConditionalFormatValueObject()
{ {
return $this->maximumConditionalFormatValueObject; return $this->maximumConditionalFormatValueObject;
} }
@ -85,10 +79,7 @@ class ConditionalDataBar
return $this; return $this;
} }
/** public function getConditionalFormattingRuleExt(): ?ConditionalFormattingRuleExtension
* @return ConditionalFormattingRuleExtension
*/
public function getConditionalFormattingRuleExt()
{ {
return $this->conditionalFormattingRuleExt; return $this->conditionalFormattingRuleExt;
} }

View File

@ -165,7 +165,7 @@ class Comments extends WriterPart
// Metadata // Metadata
[$column, $row] = Coordinate::indexesFromString($cellReference); [$column, $row] = Coordinate::indexesFromString($cellReference);
$id = 1024 + $column + $row; $id = 1024 + $column + $row;
$id = substr($id, 0, 4); $id = substr("$id", 0, 4);
// v:shape // v:shape
$objWriter->startElement('v:shape'); $objWriter->startElement('v:shape');
@ -223,10 +223,10 @@ class Comments extends WriterPart
$objWriter->writeElement('x:AutoFill', 'False'); $objWriter->writeElement('x:AutoFill', 'False');
// x:Row // x:Row
$objWriter->writeElement('x:Row', ($row - 1)); $objWriter->writeElement('x:Row', (string) ($row - 1));
// x:Column // x:Column
$objWriter->writeElement('x:Column', ($column - 1)); $objWriter->writeElement('x:Column', (string) ($column - 1));
$objWriter->endElement(); $objWriter->endElement();

View File

@ -56,7 +56,7 @@ class DocProps extends WriterPart
// Variant // Variant
$objWriter->startElement('vt:variant'); $objWriter->startElement('vt:variant');
$objWriter->writeElement('vt:i4', $spreadsheet->getSheetCount()); $objWriter->writeElement('vt:i4', (string) $spreadsheet->getSheetCount());
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
@ -68,7 +68,7 @@ class DocProps extends WriterPart
// Vector // Vector
$objWriter->startElement('vt:vector'); $objWriter->startElement('vt:vector');
$objWriter->writeAttribute('size', $spreadsheet->getSheetCount()); $objWriter->writeAttribute('size', (string) $spreadsheet->getSheetCount());
$objWriter->writeAttribute('baseType', 'lpstr'); $objWriter->writeAttribute('baseType', 'lpstr');
$sheetCount = $spreadsheet->getSheetCount(); $sheetCount = $spreadsheet->getSheetCount();
@ -207,7 +207,7 @@ class DocProps extends WriterPart
$objWriter->startElement('property'); $objWriter->startElement('property');
$objWriter->writeAttribute('fmtid', '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}'); $objWriter->writeAttribute('fmtid', '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}');
$objWriter->writeAttribute('pid', $key + 2); $objWriter->writeAttribute('pid', (string) ($key + 2));
$objWriter->writeAttribute('name', $customProperty); $objWriter->writeAttribute('name', $customProperty);
switch ($propertyType) { switch ($propertyType) {

View File

@ -104,14 +104,14 @@ class Workbook extends WriterPart
// workbookView // workbookView
$objWriter->startElement('workbookView'); $objWriter->startElement('workbookView');
$objWriter->writeAttribute('activeTab', $spreadsheet->getActiveSheetIndex()); $objWriter->writeAttribute('activeTab', (string) $spreadsheet->getActiveSheetIndex());
$objWriter->writeAttribute('autoFilterDateGrouping', ($spreadsheet->getAutoFilterDateGrouping() ? 'true' : 'false')); $objWriter->writeAttribute('autoFilterDateGrouping', ($spreadsheet->getAutoFilterDateGrouping() ? 'true' : 'false'));
$objWriter->writeAttribute('firstSheet', $spreadsheet->getFirstSheetIndex()); $objWriter->writeAttribute('firstSheet', (string) $spreadsheet->getFirstSheetIndex());
$objWriter->writeAttribute('minimized', ($spreadsheet->getMinimized() ? 'true' : 'false')); $objWriter->writeAttribute('minimized', ($spreadsheet->getMinimized() ? 'true' : 'false'));
$objWriter->writeAttribute('showHorizontalScroll', ($spreadsheet->getShowHorizontalScroll() ? 'true' : 'false')); $objWriter->writeAttribute('showHorizontalScroll', ($spreadsheet->getShowHorizontalScroll() ? 'true' : 'false'));
$objWriter->writeAttribute('showSheetTabs', ($spreadsheet->getShowSheetTabs() ? 'true' : 'false')); $objWriter->writeAttribute('showSheetTabs', ($spreadsheet->getShowSheetTabs() ? 'true' : 'false'));
$objWriter->writeAttribute('showVerticalScroll', ($spreadsheet->getShowVerticalScroll() ? 'true' : 'false')); $objWriter->writeAttribute('showVerticalScroll', ($spreadsheet->getShowVerticalScroll() ? 'true' : 'false'));
$objWriter->writeAttribute('tabRatio', $spreadsheet->getTabRatio()); $objWriter->writeAttribute('tabRatio', (string) $spreadsheet->getTabRatio());
$objWriter->writeAttribute('visibility', $spreadsheet->getVisibility()); $objWriter->writeAttribute('visibility', $spreadsheet->getVisibility());
$objWriter->endElement(); $objWriter->endElement();
@ -157,9 +157,9 @@ class Workbook extends WriterPart
$objWriter->writeAttribute('calcId', '999999'); $objWriter->writeAttribute('calcId', '999999');
$objWriter->writeAttribute('calcMode', 'auto'); $objWriter->writeAttribute('calcMode', 'auto');
// fullCalcOnLoad isn't needed if we've recalculating for the save // fullCalcOnLoad isn't needed if we've recalculating for the save
$objWriter->writeAttribute('calcCompleted', ($recalcRequired) ? 1 : 0); $objWriter->writeAttribute('calcCompleted', ($recalcRequired) ? '1' : '0');
$objWriter->writeAttribute('fullCalcOnLoad', ($recalcRequired) ? 0 : 1); $objWriter->writeAttribute('fullCalcOnLoad', ($recalcRequired) ? '0' : '1');
$objWriter->writeAttribute('forceFullCalc', ($recalcRequired) ? 0 : 1); $objWriter->writeAttribute('forceFullCalc', ($recalcRequired) ? '0' : '1');
$objWriter->endElement(); $objWriter->endElement();
} }
@ -200,7 +200,7 @@ class Workbook extends WriterPart
// Write sheet // Write sheet
$objWriter->startElement('sheet'); $objWriter->startElement('sheet');
$objWriter->writeAttribute('name', $worksheetName); $objWriter->writeAttribute('name', $worksheetName);
$objWriter->writeAttribute('sheetId', $worksheetId); $objWriter->writeAttribute('sheetId', (string) $worksheetId);
if ($sheetState !== 'visible' && $sheetState != '') { if ($sheetState !== 'visible' && $sheetState != '') {
$objWriter->writeAttribute('state', $sheetState); $objWriter->writeAttribute('state', $sheetState);
} }

View File

@ -28,7 +28,7 @@ class Worksheet extends WriterPart
* *
* @return string XML Output * @return string XML Output
*/ */
public function writeWorksheet(PhpspreadsheetWorksheet $worksheet, $stringTable = null, $includeCharts = false) public function writeWorksheet(PhpspreadsheetWorksheet $worksheet, $stringTable = [], $includeCharts = false)
{ {
// Create XML writer // Create XML writer
$objWriter = null; $objWriter = null;
@ -149,7 +149,7 @@ class Worksheet extends WriterPart
} }
$autoFilterRange = $worksheet->getAutoFilter()->getRange(); $autoFilterRange = $worksheet->getAutoFilter()->getRange();
if (!empty($autoFilterRange)) { if (!empty($autoFilterRange)) {
$objWriter->writeAttribute('filterMode', 1); $objWriter->writeAttribute('filterMode', '1');
if (!$worksheet->getAutoFilter()->getEvaluated()) { if (!$worksheet->getAutoFilter()->getEvaluated()) {
$worksheet->getAutoFilter()->showHideRows(); $worksheet->getAutoFilter()->showHideRows();
} }
@ -158,7 +158,7 @@ class Worksheet extends WriterPart
// tabColor // tabColor
if ($worksheet->isTabColorSet()) { if ($worksheet->isTabColorSet()) {
$objWriter->startElement('tabColor'); $objWriter->startElement('tabColor');
$objWriter->writeAttribute('rgb', $worksheet->getTabColor()->getARGB()); $objWriter->writeAttribute('rgb', $worksheet->getTabColor()->getARGB() ?? '');
$objWriter->endElement(); $objWriter->endElement();
} }
@ -218,7 +218,7 @@ class Worksheet extends WriterPart
// Show zeros (Excel also writes this attribute only if set to false) // Show zeros (Excel also writes this attribute only if set to false)
if ($worksheet->getSheetView()->getShowZeros() === false) { if ($worksheet->getSheetView()->getShowZeros() === false) {
$objWriter->writeAttribute('showZeros', 0); $objWriter->writeAttribute('showZeros', '0');
} }
// View Layout Type // View Layout Type
@ -252,7 +252,7 @@ class Worksheet extends WriterPart
// Pane // Pane
$pane = ''; $pane = '';
if ($worksheet->getFreezePane()) { if ($worksheet->getFreezePane()) {
[$xSplit, $ySplit] = Coordinate::coordinateFromString($worksheet->getFreezePane() ?? ''); [$xSplit, $ySplit] = Coordinate::coordinateFromString($worksheet->getFreezePane());
$xSplit = Coordinate::columnIndexFromString($xSplit); $xSplit = Coordinate::columnIndexFromString($xSplit);
--$xSplit; --$xSplit;
--$ySplit; --$ySplit;
@ -261,7 +261,7 @@ class Worksheet extends WriterPart
$pane = 'topRight'; $pane = 'topRight';
$objWriter->startElement('pane'); $objWriter->startElement('pane');
if ($xSplit > 0) { if ($xSplit > 0) {
$objWriter->writeAttribute('xSplit', $xSplit); $objWriter->writeAttribute('xSplit', "$xSplit");
} }
if ($ySplit > 0) { if ($ySplit > 0) {
$objWriter->writeAttribute('ySplit', $ySplit); $objWriter->writeAttribute('ySplit', $ySplit);
@ -334,7 +334,7 @@ class Worksheet extends WriterPart
$outlineLevelRow = $dimension->getOutlineLevel(); $outlineLevelRow = $dimension->getOutlineLevel();
} }
} }
$objWriter->writeAttribute('outlineLevelRow', (int) $outlineLevelRow); $objWriter->writeAttribute('outlineLevelRow', (string) (int) $outlineLevelRow);
// Outline level - column // Outline level - column
$outlineLevelCol = 0; $outlineLevelCol = 0;
@ -343,7 +343,7 @@ class Worksheet extends WriterPart
$outlineLevelCol = $dimension->getOutlineLevel(); $outlineLevelCol = $dimension->getOutlineLevel();
} }
} }
$objWriter->writeAttribute('outlineLevelCol', (int) $outlineLevelCol); $objWriter->writeAttribute('outlineLevelCol', (string) (int) $outlineLevelCol);
$objWriter->endElement(); $objWriter->endElement();
} }
@ -363,8 +363,8 @@ class Worksheet extends WriterPart
foreach ($worksheet->getColumnDimensions() as $colDimension) { foreach ($worksheet->getColumnDimensions() as $colDimension) {
// col // col
$objWriter->startElement('col'); $objWriter->startElement('col');
$objWriter->writeAttribute('min', Coordinate::columnIndexFromString($colDimension->getColumnIndex())); $objWriter->writeAttribute('min', (string) Coordinate::columnIndexFromString($colDimension->getColumnIndex()));
$objWriter->writeAttribute('max', Coordinate::columnIndexFromString($colDimension->getColumnIndex())); $objWriter->writeAttribute('max', (string) Coordinate::columnIndexFromString($colDimension->getColumnIndex()));
if ($colDimension->getWidth() < 0) { if ($colDimension->getWidth() < 0) {
// No width set, apply default of 10 // No width set, apply default of 10
@ -396,11 +396,11 @@ class Worksheet extends WriterPart
// Outline level // Outline level
if ($colDimension->getOutlineLevel() > 0) { if ($colDimension->getOutlineLevel() > 0) {
$objWriter->writeAttribute('outlineLevel', $colDimension->getOutlineLevel()); $objWriter->writeAttribute('outlineLevel', (string) $colDimension->getOutlineLevel());
} }
// Style // Style
$objWriter->writeAttribute('style', $colDimension->getXfIndex()); $objWriter->writeAttribute('style', (string) $colDimension->getXfIndex());
$objWriter->endElement(); $objWriter->endElement();
} }
@ -423,7 +423,7 @@ class Worksheet extends WriterPart
$objWriter->writeAttribute('algorithmName', $protection->getAlgorithm()); $objWriter->writeAttribute('algorithmName', $protection->getAlgorithm());
$objWriter->writeAttribute('hashValue', $protection->getPassword()); $objWriter->writeAttribute('hashValue', $protection->getPassword());
$objWriter->writeAttribute('saltValue', $protection->getSalt()); $objWriter->writeAttribute('saltValue', $protection->getSalt());
$objWriter->writeAttribute('spinCount', $protection->getSpinCount()); $objWriter->writeAttribute('spinCount', (string) $protection->getSpinCount());
} elseif ($protection->getPassword() !== '') { } elseif ($protection->getPassword() !== '') {
$objWriter->writeAttribute('password', $protection->getPassword()); $objWriter->writeAttribute('password', $protection->getPassword());
} }
@ -447,7 +447,7 @@ class Worksheet extends WriterPart
$objWriter->endElement(); $objWriter->endElement();
} }
private static function writeAttributeIf(XMLWriter $objWriter, $condition, string $attr, string $val): void private static function writeAttributeIf(XMLWriter $objWriter, ?bool $condition, string $attr, string $val): void
{ {
if ($condition) { if ($condition) {
$objWriter->writeAttribute($attr, $val); $objWriter->writeAttribute($attr, $val);
@ -461,7 +461,7 @@ class Worksheet extends WriterPart
} }
} }
private static function writeElementIf(XMLWriter $objWriter, $condition, string $attr, string $val): void private static function writeElementIf(XMLWriter $objWriter, bool $condition, string $attr, string $val): void
{ {
if ($condition) { if ($condition) {
$objWriter->writeElement($attr, $val); $objWriter->writeElement($attr, $val);
@ -568,7 +568,7 @@ class Worksheet extends WriterPart
$objWriter->writeAttribute($attrKey, $val); $objWriter->writeAttribute($attrKey, $val);
} }
$minCfvo = $dataBar->getMinimumConditionalFormatValueObject(); $minCfvo = $dataBar->getMinimumConditionalFormatValueObject();
if ($minCfvo) { if ($minCfvo !== null) {
$objWriter->startElementNs($prefix, 'cfvo', null); $objWriter->startElementNs($prefix, 'cfvo', null);
$objWriter->writeAttribute('type', $minCfvo->getType()); $objWriter->writeAttribute('type', $minCfvo->getType());
if ($minCfvo->getCellFormula()) { if ($minCfvo->getCellFormula()) {
@ -578,7 +578,7 @@ class Worksheet extends WriterPart
} }
$maxCfvo = $dataBar->getMaximumConditionalFormatValueObject(); $maxCfvo = $dataBar->getMaximumConditionalFormatValueObject();
if ($maxCfvo) { if ($maxCfvo !== null) {
$objWriter->startElementNs($prefix, 'cfvo', null); $objWriter->startElementNs($prefix, 'cfvo', null);
$objWriter->writeAttribute('type', $maxCfvo->getType()); $objWriter->writeAttribute('type', $maxCfvo->getType());
if ($maxCfvo->getCellFormula()) { if ($maxCfvo->getCellFormula()) {
@ -600,9 +600,8 @@ class Worksheet extends WriterPart
$objWriter->endElement(); //end conditionalFormatting $objWriter->endElement(); //end conditionalFormatting
} }
private static function writeDataBarElements(XMLWriter $objWriter, $dataBar): void private static function writeDataBarElements(XMLWriter $objWriter, ?ConditionalDataBar $dataBar): void
{ {
/** @var ConditionalDataBar $dataBar */
if ($dataBar) { if ($dataBar) {
$objWriter->startElement('dataBar'); $objWriter->startElement('dataBar');
self::writeAttributeIf($objWriter, null !== $dataBar->getShowValue(), 'showValue', $dataBar->getShowValue() ? '1' : '0'); self::writeAttributeIf($objWriter, null !== $dataBar->getShowValue(), 'showValue', $dataBar->getShowValue() ? '1' : '0');
@ -669,7 +668,7 @@ class Worksheet extends WriterPart
'dxfId', 'dxfId',
(string) $this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode($conditional->getHashCode()) (string) $this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode($conditional->getHashCode())
); );
$objWriter->writeAttribute('priority', $id++); $objWriter->writeAttribute('priority', (string) $id++);
self::writeAttributeif( self::writeAttributeif(
$objWriter, $objWriter,
@ -724,7 +723,7 @@ class Worksheet extends WriterPart
if (!empty($dataValidationCollection)) { if (!empty($dataValidationCollection)) {
$dataValidationCollection = Coordinate::mergeRangesInCollection($dataValidationCollection); $dataValidationCollection = Coordinate::mergeRangesInCollection($dataValidationCollection);
$objWriter->startElement('dataValidations'); $objWriter->startElement('dataValidations');
$objWriter->writeAttribute('count', count($dataValidationCollection)); $objWriter->writeAttribute('count', (string) count($dataValidationCollection));
foreach ($dataValidationCollection as $coordinate => $dv) { foreach ($dataValidationCollection as $coordinate => $dv) {
$objWriter->startElement('dataValidation'); $objWriter->startElement('dataValidation');
@ -922,11 +921,11 @@ class Worksheet extends WriterPart
$rules = $column->getRules(); $rules = $column->getRules();
if (count($rules) > 0) { if (count($rules) > 0) {
$objWriter->startElement('filterColumn'); $objWriter->startElement('filterColumn');
$objWriter->writeAttribute('colId', $worksheet->getAutoFilter()->getColumnOffset($columnID)); $objWriter->writeAttribute('colId', (string) $worksheet->getAutoFilter()->getColumnOffset($columnID));
$objWriter->startElement($column->getFilterType()); $objWriter->startElement($column->getFilterType());
if ($column->getJoin() == Column::AUTOFILTER_COLUMN_JOIN_AND) { if ($column->getJoin() == Column::AUTOFILTER_COLUMN_JOIN_AND) {
$objWriter->writeAttribute('and', 1); $objWriter->writeAttribute('and', '1');
} }
foreach ($rules as $rule) { foreach ($rules as $rule) {
@ -936,7 +935,7 @@ class Worksheet extends WriterPart
($rule->getValue() === '') ($rule->getValue() === '')
) { ) {
// Filter rule for Blanks // Filter rule for Blanks
$objWriter->writeAttribute('blank', 1); $objWriter->writeAttribute('blank', '1');
} elseif ($rule->getRuleType() === Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER) { } elseif ($rule->getRuleType() === Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER) {
// Dynamic Filter Rule // Dynamic Filter Rule
$objWriter->writeAttribute('type', $rule->getGrouping()); $objWriter->writeAttribute('type', $rule->getGrouping());
@ -1019,24 +1018,24 @@ class Worksheet extends WriterPart
{ {
// pageSetup // pageSetup
$objWriter->startElement('pageSetup'); $objWriter->startElement('pageSetup');
$objWriter->writeAttribute('paperSize', $worksheet->getPageSetup()->getPaperSize()); $objWriter->writeAttribute('paperSize', (string) $worksheet->getPageSetup()->getPaperSize());
$objWriter->writeAttribute('orientation', $worksheet->getPageSetup()->getOrientation()); $objWriter->writeAttribute('orientation', $worksheet->getPageSetup()->getOrientation());
if ($worksheet->getPageSetup()->getScale() !== null) { if ($worksheet->getPageSetup()->getScale() !== null) {
$objWriter->writeAttribute('scale', $worksheet->getPageSetup()->getScale()); $objWriter->writeAttribute('scale', (string) $worksheet->getPageSetup()->getScale());
} }
if ($worksheet->getPageSetup()->getFitToHeight() !== null) { if ($worksheet->getPageSetup()->getFitToHeight() !== null) {
$objWriter->writeAttribute('fitToHeight', $worksheet->getPageSetup()->getFitToHeight()); $objWriter->writeAttribute('fitToHeight', (string) $worksheet->getPageSetup()->getFitToHeight());
} else { } else {
$objWriter->writeAttribute('fitToHeight', '0'); $objWriter->writeAttribute('fitToHeight', '0');
} }
if ($worksheet->getPageSetup()->getFitToWidth() !== null) { if ($worksheet->getPageSetup()->getFitToWidth() !== null) {
$objWriter->writeAttribute('fitToWidth', $worksheet->getPageSetup()->getFitToWidth()); $objWriter->writeAttribute('fitToWidth', (string) $worksheet->getPageSetup()->getFitToWidth());
} else { } else {
$objWriter->writeAttribute('fitToWidth', '0'); $objWriter->writeAttribute('fitToWidth', '0');
} }
if ($worksheet->getPageSetup()->getFirstPageNumber() !== null) { if ($worksheet->getPageSetup()->getFirstPageNumber() !== null) {
$objWriter->writeAttribute('firstPageNumber', $worksheet->getPageSetup()->getFirstPageNumber()); $objWriter->writeAttribute('firstPageNumber', (string) $worksheet->getPageSetup()->getFirstPageNumber());
$objWriter->writeAttribute('useFirstPageNumber', '1'); $objWriter->writeAttribute('useFirstPageNumber', '1');
} }
$objWriter->writeAttribute('pageOrder', $worksheet->getPageSetup()->getPageOrder()); $objWriter->writeAttribute('pageOrder', $worksheet->getPageSetup()->getPageOrder());
@ -1089,8 +1088,8 @@ class Worksheet extends WriterPart
// rowBreaks // rowBreaks
if (!empty($aRowBreaks)) { if (!empty($aRowBreaks)) {
$objWriter->startElement('rowBreaks'); $objWriter->startElement('rowBreaks');
$objWriter->writeAttribute('count', count($aRowBreaks)); $objWriter->writeAttribute('count', (string) count($aRowBreaks));
$objWriter->writeAttribute('manualBreakCount', count($aRowBreaks)); $objWriter->writeAttribute('manualBreakCount', (string) count($aRowBreaks));
foreach ($aRowBreaks as $cell) { foreach ($aRowBreaks as $cell) {
$coords = Coordinate::coordinateFromString($cell); $coords = Coordinate::coordinateFromString($cell);
@ -1107,14 +1106,14 @@ class Worksheet extends WriterPart
// Second, write column breaks // Second, write column breaks
if (!empty($aColumnBreaks)) { if (!empty($aColumnBreaks)) {
$objWriter->startElement('colBreaks'); $objWriter->startElement('colBreaks');
$objWriter->writeAttribute('count', count($aColumnBreaks)); $objWriter->writeAttribute('count', (string) count($aColumnBreaks));
$objWriter->writeAttribute('manualBreakCount', count($aColumnBreaks)); $objWriter->writeAttribute('manualBreakCount', (string) count($aColumnBreaks));
foreach ($aColumnBreaks as $cell) { foreach ($aColumnBreaks as $cell) {
$coords = Coordinate::coordinateFromString($cell); $coords = Coordinate::coordinateFromString($cell);
$objWriter->startElement('brk'); $objWriter->startElement('brk');
$objWriter->writeAttribute('id', Coordinate::columnIndexFromString($coords[0]) - 1); $objWriter->writeAttribute('id', (string) (Coordinate::columnIndexFromString($coords[0]) - 1));
$objWriter->writeAttribute('man', '1'); $objWriter->writeAttribute('man', '1');
$objWriter->endElement(); $objWriter->endElement();
} }
@ -1166,7 +1165,7 @@ class Worksheet extends WriterPart
if ($writeCurrentRow) { if ($writeCurrentRow) {
// Start a new row // Start a new row
$objWriter->startElement('row'); $objWriter->startElement('row');
$objWriter->writeAttribute('r', $currentRow); $objWriter->writeAttribute('r', "$currentRow");
$objWriter->writeAttribute('spans', '1:' . $colCount); $objWriter->writeAttribute('spans', '1:' . $colCount);
// Row dimensions // Row dimensions
@ -1187,12 +1186,12 @@ class Worksheet extends WriterPart
// Outline level // Outline level
if ($rowDimension->getOutlineLevel() > 0) { if ($rowDimension->getOutlineLevel() > 0) {
$objWriter->writeAttribute('outlineLevel', $rowDimension->getOutlineLevel()); $objWriter->writeAttribute('outlineLevel', (string) $rowDimension->getOutlineLevel());
} }
// Style // Style
if ($rowDimension->getXfIndex() !== null) { if ($rowDimension->getXfIndex() !== null) {
$objWriter->writeAttribute('s', $rowDimension->getXfIndex()); $objWriter->writeAttribute('s', (string) $rowDimension->getXfIndex());
$objWriter->writeAttribute('customFormat', '1'); $objWriter->writeAttribute('customFormat', '1');
} }
@ -1263,7 +1262,7 @@ class Worksheet extends WriterPart
$cellValue = $cellValue . '.0'; $cellValue = $cellValue . '.0';
} }
} }
$objWriter->writeElement('v', $cellValue); $objWriter->writeElement('v', "$cellValue");
} }
private function writeCellBoolean(XMLWriter $objWriter, string $mappedType, bool $cellValue): void private function writeCellBoolean(XMLWriter $objWriter, string $mappedType, bool $cellValue): void
@ -1332,7 +1331,7 @@ class Worksheet extends WriterPart
// Sheet styles // Sheet styles
$xfi = $pCell->getXfIndex(); $xfi = $pCell->getXfIndex();
self::writeAttributeIf($objWriter, $xfi, 's', $xfi); self::writeAttributeIf($objWriter, (bool) $xfi, 's', "$xfi");
// If cell value is supplied, write cell value // If cell value is supplied, write cell value
$cellValue = $pCell->getValue(); $cellValue = $pCell->getValue();
@ -1449,7 +1448,6 @@ class Worksheet extends WriterPart
/** @var Conditional $conditional */ /** @var Conditional $conditional */
foreach ($conditionalStyles as $conditional) { foreach ($conditionalStyles as $conditional) {
$dataBar = $conditional->getDataBar(); $dataBar = $conditional->getDataBar();
// @phpstan-ignore-next-line
if ($dataBar && $dataBar->getConditionalFormattingRuleExt()) { if ($dataBar && $dataBar->getConditionalFormattingRuleExt()) {
$conditionalFormattingRuleExtList[] = $dataBar->getConditionalFormattingRuleExt(); $conditionalFormattingRuleExtList[] = $dataBar->getConditionalFormattingRuleExt();
} }

View File

@ -86,8 +86,8 @@ class ConditionalFormattingDataBarXlsxTest extends TestCase
$dataBar = $conditionalRule->getDataBar(); $dataBar = $conditionalRule->getDataBar();
self::assertNotNull($dataBar); self::assertNotNull($dataBar);
self::assertNotEmpty($dataBar->getMinimumConditionalFormatValueObject()); self::assertNotNull($dataBar->getMinimumConditionalFormatValueObject());
self::assertNotEmpty($dataBar->getMaximumConditionalFormatValueObject()); self::assertNotNull($dataBar->getMaximumConditionalFormatValueObject());
self::assertEquals('min', $dataBar->getMinimumConditionalFormatValueObject()->getType()); self::assertEquals('min', $dataBar->getMinimumConditionalFormatValueObject()->getType());
self::assertEquals('max', $dataBar->getMaximumConditionalFormatValueObject()->getType()); self::assertEquals('max', $dataBar->getMaximumConditionalFormatValueObject()->getType());
self::assertEquals(Color::COLOR_GREEN, $dataBar->getColor()); self::assertEquals(Color::COLOR_GREEN, $dataBar->getColor());
@ -109,8 +109,8 @@ class ConditionalFormattingDataBarXlsxTest extends TestCase
self::assertNotEmpty($dataBar); self::assertNotEmpty($dataBar);
self::assertEquals(Conditional::CONDITION_DATABAR, $conditionalRule->getConditionType()); self::assertEquals(Conditional::CONDITION_DATABAR, $conditionalRule->getConditionType());
self::assertNotNull($dataBar); self::assertNotNull($dataBar);
self::assertNotEmpty($dataBar->getMinimumConditionalFormatValueObject()); self::assertNotNull($dataBar->getMinimumConditionalFormatValueObject());
self::assertNotEmpty($dataBar->getMaximumConditionalFormatValueObject()); self::assertNotNull($dataBar->getMaximumConditionalFormatValueObject());
self::assertEquals('min', $dataBar->getMinimumConditionalFormatValueObject()->getType()); self::assertEquals('min', $dataBar->getMinimumConditionalFormatValueObject()->getType());
self::assertEquals('max', $dataBar->getMaximumConditionalFormatValueObject()->getType()); self::assertEquals('max', $dataBar->getMaximumConditionalFormatValueObject()->getType());
@ -118,6 +118,7 @@ class ConditionalFormattingDataBarXlsxTest extends TestCase
self::assertNotEmpty($dataBar->getConditionalFormattingRuleExt()); self::assertNotEmpty($dataBar->getConditionalFormattingRuleExt());
//ext //ext
$rule1ext = $dataBar->getConditionalFormattingRuleExt(); $rule1ext = $dataBar->getConditionalFormattingRuleExt();
self::assertNotNull($rule1ext);
self::assertEquals('{72C64AE0-5CD9-164F-83D1-AB720F263E79}', $rule1ext->getId()); self::assertEquals('{72C64AE0-5CD9-164F-83D1-AB720F263E79}', $rule1ext->getId());
self::assertEquals('dataBar', $rule1ext->getCfRule()); self::assertEquals('dataBar', $rule1ext->getCfRule());
self::assertEquals('A3:A23', $rule1ext->getSqref()); self::assertEquals('A3:A23', $rule1ext->getSqref());
@ -165,8 +166,8 @@ class ConditionalFormattingDataBarXlsxTest extends TestCase
self::assertNotEmpty($dataBar); self::assertNotEmpty($dataBar);
self::assertEquals(Conditional::CONDITION_DATABAR, $conditionalRule->getConditionType()); self::assertEquals(Conditional::CONDITION_DATABAR, $conditionalRule->getConditionType());
self::assertNotNull($dataBar); self::assertNotNull($dataBar);
self::assertNotEmpty($dataBar->getMinimumConditionalFormatValueObject()); self::assertNotNull($dataBar->getMinimumConditionalFormatValueObject());
self::assertNotEmpty($dataBar->getMaximumConditionalFormatValueObject()); self::assertNotNull($dataBar->getMaximumConditionalFormatValueObject());
self::assertEquals('num', $dataBar->getMinimumConditionalFormatValueObject()->getType()); self::assertEquals('num', $dataBar->getMinimumConditionalFormatValueObject()->getType());
self::assertEquals('num', $dataBar->getMaximumConditionalFormatValueObject()->getType()); self::assertEquals('num', $dataBar->getMaximumConditionalFormatValueObject()->getType());
self::assertEquals('-5', $dataBar->getMinimumConditionalFormatValueObject()->getValue()); self::assertEquals('-5', $dataBar->getMinimumConditionalFormatValueObject()->getValue());
@ -175,6 +176,7 @@ class ConditionalFormattingDataBarXlsxTest extends TestCase
self::assertNotEmpty($dataBar->getConditionalFormattingRuleExt()); self::assertNotEmpty($dataBar->getConditionalFormattingRuleExt());
//ext //ext
$rule1ext = $dataBar->getConditionalFormattingRuleExt(); $rule1ext = $dataBar->getConditionalFormattingRuleExt();
self::assertNotNull($rule1ext);
self::assertEquals('{98904F60-57F0-DF47-B480-691B20D325E3}', $rule1ext->getId()); self::assertEquals('{98904F60-57F0-DF47-B480-691B20D325E3}', $rule1ext->getId());
self::assertEquals('dataBar', $rule1ext->getCfRule()); self::assertEquals('dataBar', $rule1ext->getCfRule());
self::assertEquals('B3:B23', $rule1ext->getSqref()); self::assertEquals('B3:B23', $rule1ext->getSqref());
@ -224,8 +226,8 @@ class ConditionalFormattingDataBarXlsxTest extends TestCase
self::assertNotEmpty($dataBar); self::assertNotEmpty($dataBar);
self::assertEquals(Conditional::CONDITION_DATABAR, $conditionalRule->getConditionType()); self::assertEquals(Conditional::CONDITION_DATABAR, $conditionalRule->getConditionType());
self::assertNotNull($dataBar); self::assertNotNull($dataBar);
self::assertNotEmpty($dataBar->getMinimumConditionalFormatValueObject()); self::assertNotNull($dataBar->getMinimumConditionalFormatValueObject());
self::assertNotEmpty($dataBar->getMaximumConditionalFormatValueObject()); self::assertNotNull($dataBar->getMaximumConditionalFormatValueObject());
self::assertEquals('min', $dataBar->getMinimumConditionalFormatValueObject()->getType()); self::assertEquals('min', $dataBar->getMinimumConditionalFormatValueObject()->getType());
self::assertEquals('max', $dataBar->getMaximumConditionalFormatValueObject()->getType()); self::assertEquals('max', $dataBar->getMaximumConditionalFormatValueObject()->getType());
self::assertEmpty($dataBar->getMinimumConditionalFormatValueObject()->getValue()); self::assertEmpty($dataBar->getMinimumConditionalFormatValueObject()->getValue());
@ -235,6 +237,7 @@ class ConditionalFormattingDataBarXlsxTest extends TestCase
//ext //ext
$rule1ext = $dataBar->getConditionalFormattingRuleExt(); $rule1ext = $dataBar->getConditionalFormattingRuleExt();
self::assertNotNull($rule1ext);
self::assertEquals('{453C04BA-7ABD-8548-8A17-D9CFD2BDABE9}', $rule1ext->getId()); self::assertEquals('{453C04BA-7ABD-8548-8A17-D9CFD2BDABE9}', $rule1ext->getId());
self::assertEquals('dataBar', $rule1ext->getCfRule()); self::assertEquals('dataBar', $rule1ext->getCfRule());
self::assertEquals('C3:C23', $rule1ext->getSqref()); self::assertEquals('C3:C23', $rule1ext->getSqref());
@ -286,8 +289,8 @@ class ConditionalFormattingDataBarXlsxTest extends TestCase
self::assertNotNull($dataBar); self::assertNotNull($dataBar);
self::assertTrue($dataBar->getShowValue()); self::assertTrue($dataBar->getShowValue());
self::assertNotEmpty($dataBar->getMinimumConditionalFormatValueObject()); self::assertNotNull($dataBar->getMinimumConditionalFormatValueObject());
self::assertNotEmpty($dataBar->getMaximumConditionalFormatValueObject()); self::assertNotNull($dataBar->getMaximumConditionalFormatValueObject());
self::assertEquals('formula', $dataBar->getMinimumConditionalFormatValueObject()->getType()); self::assertEquals('formula', $dataBar->getMinimumConditionalFormatValueObject()->getType());
self::assertEquals('formula', $dataBar->getMaximumConditionalFormatValueObject()->getType()); self::assertEquals('formula', $dataBar->getMaximumConditionalFormatValueObject()->getType());
self::assertEquals('3+2', $dataBar->getMinimumConditionalFormatValueObject()->getValue()); self::assertEquals('3+2', $dataBar->getMinimumConditionalFormatValueObject()->getValue());
@ -297,6 +300,7 @@ class ConditionalFormattingDataBarXlsxTest extends TestCase
//ext //ext
$rule1ext = $dataBar->getConditionalFormattingRuleExt(); $rule1ext = $dataBar->getConditionalFormattingRuleExt();
self::assertNotNull($rule1ext);
self::assertEquals('{6C1E066A-E240-3D4A-98F8-8CC218B0DFD2}', $rule1ext->getId()); self::assertEquals('{6C1E066A-E240-3D4A-98F8-8CC218B0DFD2}', $rule1ext->getId());
self::assertEquals('dataBar', $rule1ext->getCfRule()); self::assertEquals('dataBar', $rule1ext->getCfRule());
self::assertEquals('D3:D23', $rule1ext->getSqref()); self::assertEquals('D3:D23', $rule1ext->getSqref());