diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 8b17217..ca316ab 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -267,4 +267,4 @@ jobs:
run: composer install --no-progress --prefer-dist --optimize-autoloader
- name: Static Analysis using PHPStan
- run: phpstan analyse --no-progress src tests
+ run: ./vendor/bin/phpstan analyse -c phpstan.neon --no-progress
diff --git a/phpstan.neon b/phpstan.neon
new file mode 100644
index 0000000..fddfd9c
--- /dev/null
+++ b/phpstan.neon
@@ -0,0 +1,9 @@
+parameters:
+ level: 3
+ paths:
+ - src
+ - tests
+ excludePaths:
+ # Exclude these files that are OK
+ - src/Spout/Reader/Common/Creator/ReaderEntityFactory.php
+ - src/Spout/Writer/Common/Creator/WriterEntityFactory.php
diff --git a/src/Spout/Common/Helper/CellTypeHelper.php b/src/Spout/Common/Helper/CellTypeHelper.php
index 97d2e8d..8da35cc 100644
--- a/src/Spout/Common/Helper/CellTypeHelper.php
+++ b/src/Spout/Common/Helper/CellTypeHelper.php
@@ -9,7 +9,7 @@ namespace Box\Spout\Common\Helper;
class CellTypeHelper
{
/**
- * @param $value
+ * @param mixed|null $value
* @return bool Whether the given value is considered "empty"
*/
public static function isEmpty($value)
@@ -18,7 +18,7 @@ class CellTypeHelper
}
/**
- * @param $value
+ * @param mixed $value
* @return bool Whether the given value is a non empty string
*/
public static function isNonEmptyString($value)
@@ -30,7 +30,7 @@ class CellTypeHelper
* Returns whether the given value is numeric.
* A numeric value is from type "integer" or "double" ("float" is not returned by gettype).
*
- * @param $value
+ * @param mixed $value
* @return bool Whether the given value is numeric
*/
public static function isNumeric($value)
@@ -44,7 +44,7 @@ class CellTypeHelper
* Returns whether the given value is boolean.
* "true"/"false" and 0/1 are not booleans.
*
- * @param $value
+ * @param mixed $value
* @return bool Whether the given value is boolean
*/
public static function isBoolean($value)
@@ -55,7 +55,7 @@ class CellTypeHelper
/**
* Returns whether the given value is a DateTime or DateInterval object.
*
- * @param $value
+ * @param mixed $value
* @return bool Whether the given value is a DateTime or DateInterval object
*/
public static function isDateTimeOrDateInterval($value)
diff --git a/src/Spout/Common/Helper/StringHelper.php b/src/Spout/Common/Helper/StringHelper.php
index 6256b1e..340d65c 100644
--- a/src/Spout/Common/Helper/StringHelper.php
+++ b/src/Spout/Common/Helper/StringHelper.php
@@ -88,7 +88,7 @@ class StringHelper
* @see https://wiki.php.net/rfc/locale_independent_float_to_string for the changed behavior in PHP8.
*
* @param int|float $numericValue
- * @return string
+ * @return int|float|string
*/
public function formatNumericValue($numericValue)
{
diff --git a/src/Spout/Reader/Common/Creator/ReaderFactory.php b/src/Spout/Reader/Common/Creator/ReaderFactory.php
index 6b10175..09ca422 100644
--- a/src/Spout/Reader/Common/Creator/ReaderFactory.php
+++ b/src/Spout/Reader/Common/Creator/ReaderFactory.php
@@ -45,7 +45,7 @@ class ReaderFactory
/**
* This creates an instance of the appropriate reader, given the type of the file to be read
*
- * @param string $readerType Type of the reader to instantiate
+ * @param string $readerType Type of the reader to instantiate
* @throws \Box\Spout\Common\Exception\UnsupportedTypeException
* @return ReaderInterface
*/
diff --git a/src/Spout/Reader/ODS/Creator/InternalEntityFactory.php b/src/Spout/Reader/ODS/Creator/InternalEntityFactory.php
index cb06ce2..a9d96d6 100644
--- a/src/Spout/Reader/ODS/Creator/InternalEntityFactory.php
+++ b/src/Spout/Reader/ODS/Creator/InternalEntityFactory.php
@@ -105,7 +105,7 @@ class InternalEntityFactory implements InternalEntityFactoryInterface
}
/**
- * @param $xmlReader
+ * @param XMLReader $xmlReader
* @return XMLProcessor
*/
private function createXMLProcessor($xmlReader)
diff --git a/src/Spout/Reader/ODS/Helper/CellValueFormatter.php b/src/Spout/Reader/ODS/Helper/CellValueFormatter.php
index 77bd3c2..b69dcd6 100644
--- a/src/Spout/Reader/ODS/Helper/CellValueFormatter.php
+++ b/src/Spout/Reader/ODS/Helper/CellValueFormatter.php
@@ -64,7 +64,7 @@ class CellValueFormatter
* Returns the (unescaped) correctly marshalled, cell value associated to the given XML node.
* @see http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#refTable13
*
- * @param \DOMNode $node
+ * @param \DOMElement $node
* @throws InvalidValueException If the node value is not valid
* @return string|int|float|bool|\DateTime|\DateInterval The value associated with the cell, empty string if cell's type is void/undefined
*/
@@ -96,7 +96,7 @@ class CellValueFormatter
/**
* Returns the cell String value.
*
- * @param \DOMNode $node
+ * @param \DOMElement $node
* @return string The value associated with the cell
*/
protected function formatStringCellValue($node)
@@ -115,7 +115,7 @@ class CellValueFormatter
}
/**
- * @param $pNode
+ * @param \DOMNode $pNode
* @return string
*/
private function extractTextValueFromNode($pNode)
@@ -159,7 +159,7 @@ class CellValueFormatter
*
* @see https://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1415200_253892949
*
- * @param \DOMNode $node The XML node representing a whitespace
+ * @param \DOMElement $node The XML node representing a whitespace
* @return string The corresponding whitespace value
*/
private function transformWhitespaceNode($node)
@@ -173,7 +173,7 @@ class CellValueFormatter
/**
* Returns the cell Numeric value from the given node.
*
- * @param \DOMNode $node
+ * @param \DOMElement $node
* @return int|float The value associated with the cell
*/
protected function formatFloatCellValue($node)
@@ -190,7 +190,7 @@ class CellValueFormatter
/**
* Returns the cell Boolean value from the given node.
*
- * @param \DOMNode $node
+ * @param \DOMElement $node
* @return bool The value associated with the cell
*/
protected function formatBooleanCellValue($node)
@@ -203,7 +203,7 @@ class CellValueFormatter
/**
* Returns the cell Date value from the given node.
*
- * @param \DOMNode $node
+ * @param \DOMElement $node
* @throws InvalidValueException If the value is not a valid date
* @return \DateTime|string The value associated with the cell
*/
@@ -234,7 +234,7 @@ class CellValueFormatter
/**
* Returns the cell Time value from the given node.
*
- * @param \DOMNode $node
+ * @param \DOMElement $node
* @throws InvalidValueException If the value is not a valid time
* @return \DateInterval|string The value associated with the cell
*/
@@ -265,7 +265,7 @@ class CellValueFormatter
/**
* Returns the cell Currency value from the given node.
*
- * @param \DOMNode $node
+ * @param \DOMElement $node
* @return string The value associated with the cell (e.g. "100 USD" or "9.99 EUR")
*/
protected function formatCurrencyCellValue($node)
@@ -279,7 +279,7 @@ class CellValueFormatter
/**
* Returns the cell Percentage value from the given node.
*
- * @param \DOMNode $node
+ * @param \DOMElement $node
* @return int|float The value associated with the cell
*/
protected function formatPercentageCellValue($node)
diff --git a/src/Spout/Reader/ODS/RowIterator.php b/src/Spout/Reader/ODS/RowIterator.php
index 29643b7..f9a0733 100644
--- a/src/Spout/Reader/ODS/RowIterator.php
+++ b/src/Spout/Reader/ODS/RowIterator.php
@@ -56,7 +56,7 @@ class RowIterator implements IteratorInterface
/** @var Row The currently processed row */
protected $currentlyProcessedRow;
- /** @var Row Buffer used to store the current row, while checking if there are more rows to read */
+ /** @var Row|null Buffer used to store the current row, while checking if there are more rows to read */
protected $rowBuffer;
/** @var bool Indicates whether all rows have been read */
@@ -68,7 +68,7 @@ class RowIterator implements IteratorInterface
/** @var int Row index to be processed next (one-based) */
protected $nextRowIndexToBeProcessed = 1;
- /** @var Cell Last processed cell (because when reading cell at column N+1, cell N is processed) */
+ /** @var Cell|null Last processed cell (because when reading cell at column N+1, cell N is processed) */
protected $lastProcessedCell;
/** @var int Number of times the last processed row should be repeated */
@@ -225,6 +225,7 @@ class RowIterator implements IteratorInterface
$currentNumColumnsRepeated = $this->getNumColumnsRepeatedForCurrentNode($xmlReader);
// NOTE: expand() will automatically decode all XML entities of the child nodes
+ /** @var \DOMElement $node */
$node = $xmlReader->expand();
$currentCell = $this->getCell($node);
@@ -316,7 +317,7 @@ class RowIterator implements IteratorInterface
/**
* Returns the cell with (unescaped) correctly marshalled, cell value associated to the given XML node.
*
- * @param \DOMNode $node
+ * @param \DOMElement $node
* @return Cell The cell set with the associated with the cell
*/
protected function getCell($node)
@@ -339,7 +340,7 @@ class RowIterator implements IteratorInterface
* row data yet (as we still need to apply the "num-columns-repeated" attribute).
*
* @param Row $currentRow
- * @param Cell $lastReadCell The last read cell
+ * @param Cell|null $lastReadCell The last read cell
* @return bool Whether the row is empty
*/
protected function isEmptyRow($currentRow, $lastReadCell)
diff --git a/src/Spout/Reader/ODS/SheetIterator.php b/src/Spout/Reader/ODS/SheetIterator.php
index c396d79..b2cb8b8 100644
--- a/src/Spout/Reader/ODS/SheetIterator.php
+++ b/src/Spout/Reader/ODS/SheetIterator.php
@@ -108,6 +108,7 @@ class SheetIterator implements IteratorInterface
$sheetsVisibility = [];
$this->xmlReader->readUntilNodeFound(self::XML_NODE_AUTOMATIC_STYLES);
+ /** @var \DOMElement $automaticStylesNode */
$automaticStylesNode = $this->xmlReader->expand();
$tableStyleNodes = $automaticStylesNode->getElementsByTagNameNS(self::XML_STYLE_NAMESPACE, self::XML_NODE_STYLE_TABLE_PROPERTIES);
diff --git a/src/Spout/Reader/ReaderAbstract.php b/src/Spout/Reader/ReaderAbstract.php
index 39b333d..1ef1c20 100644
--- a/src/Spout/Reader/ReaderAbstract.php
+++ b/src/Spout/Reader/ReaderAbstract.php
@@ -53,7 +53,7 @@ abstract class ReaderAbstract implements ReaderInterface
/**
* Closes the reader. To be used after reading the file.
*
- * @return ReaderAbstract
+ * @return void
*/
abstract protected function closeReader();
diff --git a/src/Spout/Reader/XLSX/Creator/InternalEntityFactory.php b/src/Spout/Reader/XLSX/Creator/InternalEntityFactory.php
index 4dc2dc7..d5ab4c9 100644
--- a/src/Spout/Reader/XLSX/Creator/InternalEntityFactory.php
+++ b/src/Spout/Reader/XLSX/Creator/InternalEntityFactory.php
@@ -152,7 +152,7 @@ class InternalEntityFactory implements InternalEntityFactoryInterface
}
/**
- * @param $xmlReader
+ * @param XMLReader $xmlReader
* @return XMLProcessor
*/
public function createXMLProcessor($xmlReader)
diff --git a/src/Spout/Reader/XLSX/Helper/CellValueFormatter.php b/src/Spout/Reader/XLSX/Helper/CellValueFormatter.php
index 5fcd794..cf4c383 100644
--- a/src/Spout/Reader/XLSX/Helper/CellValueFormatter.php
+++ b/src/Spout/Reader/XLSX/Helper/CellValueFormatter.php
@@ -66,7 +66,7 @@ class CellValueFormatter
/**
* Returns the (unescaped) correctly marshalled, cell value associated to the given XML node.
*
- * @param \DOMNode $node
+ * @param \DOMElement $node
* @throws InvalidValueException If the value is not valid
* @return string|int|float|bool|\DateTime The value associated with the cell
*/
@@ -102,7 +102,7 @@ class CellValueFormatter
/**
* Returns the cell's string value from a node's nested value node
*
- * @param \DOMNode $node
+ * @param \DOMElement $node
* @return string The value associated with the cell
*/
protected function getVNodeValue($node)
@@ -117,7 +117,7 @@ class CellValueFormatter
/**
* Returns the cell String value where string is inline.
*
- * @param \DOMNode $node
+ * @param \DOMElement $node
* @return string The value associated with the cell
*/
protected function formatInlineStringCellValue($node)
diff --git a/src/Spout/Reader/XLSX/Manager/SharedStringsCaching/FileBasedStrategy.php b/src/Spout/Reader/XLSX/Manager/SharedStringsCaching/FileBasedStrategy.php
index 60e69b0..9a4142b 100644
--- a/src/Spout/Reader/XLSX/Manager/SharedStringsCaching/FileBasedStrategy.php
+++ b/src/Spout/Reader/XLSX/Manager/SharedStringsCaching/FileBasedStrategy.php
@@ -32,7 +32,7 @@ class FileBasedStrategy implements CachingStrategyInterface
*/
protected $maxNumStringsPerTempFile;
- /** @var resource Pointer to the last temp file a shared string was written to */
+ /** @var resource|null Pointer to the last temp file a shared string was written to */
protected $tempFilePointer;
/**
diff --git a/src/Spout/Reader/XLSX/Manager/SharedStringsManager.php b/src/Spout/Reader/XLSX/Manager/SharedStringsManager.php
index 46cbe6d..85d0103 100644
--- a/src/Spout/Reader/XLSX/Manager/SharedStringsManager.php
+++ b/src/Spout/Reader/XLSX/Manager/SharedStringsManager.php
@@ -179,6 +179,7 @@ class SharedStringsManager
$sharedStringValue = '';
// NOTE: expand() will automatically decode all XML entities of the child nodes
+ /** @var \DOMElement $siNode */
$siNode = $xmlReader->expand();
$textNodes = $siNode->getElementsByTagName(self::XML_NODE_T);
diff --git a/src/Spout/Reader/XLSX/RowIterator.php b/src/Spout/Reader/XLSX/RowIterator.php
index 93c2b9d..fcb2b88 100644
--- a/src/Spout/Reader/XLSX/RowIterator.php
+++ b/src/Spout/Reader/XLSX/RowIterator.php
@@ -276,6 +276,7 @@ class RowIterator implements IteratorInterface
$currentColumnIndex = $this->getColumnIndex($xmlReader);
// NOTE: expand() will automatically decode all XML entities of the child nodes
+ /** @var \DOMElement $node */
$node = $xmlReader->expand();
$cell = $this->getCell($node);
@@ -352,7 +353,7 @@ class RowIterator implements IteratorInterface
/**
* Returns the cell with (unescaped) correctly marshalled, cell value associated to the given XML node.
*
- * @param \DOMNode $node
+ * @param \DOMElement $node
* @return Cell The cell set with the associated with the cell
*/
protected function getCell($node)
diff --git a/src/Spout/Writer/Common/Entity/Worksheet.php b/src/Spout/Writer/Common/Entity/Worksheet.php
index 74c4976..1e496f0 100644
--- a/src/Spout/Writer/Common/Entity/Worksheet.php
+++ b/src/Spout/Writer/Common/Entity/Worksheet.php
@@ -11,7 +11,7 @@ class Worksheet
/** @var string Path to the XML file that will contain the sheet data */
private $filePath;
- /** @var resource Pointer to the sheet data file (e.g. xl/worksheets/sheet1.xml) */
+ /** @var resource|null Pointer to the sheet data file (e.g. xl/worksheets/sheet1.xml) */
private $filePointer;
/** @var Sheet The "external" sheet */
diff --git a/src/Spout/Writer/ODS/Creator/HelperFactory.php b/src/Spout/Writer/ODS/Creator/HelperFactory.php
index e6aa645..cdc5a6a 100644
--- a/src/Spout/Writer/ODS/Creator/HelperFactory.php
+++ b/src/Spout/Writer/ODS/Creator/HelperFactory.php
@@ -30,7 +30,7 @@ class HelperFactory extends \Box\Spout\Common\Creator\HelperFactory
}
/**
- * @param $entityFactory
+ * @param InternalEntityFactory $entityFactory
* @return ZipHelper
*/
private function createZipHelper($entityFactory)
diff --git a/src/Spout/Writer/ODS/Manager/WorksheetManager.php b/src/Spout/Writer/ODS/Manager/WorksheetManager.php
index 7d7cb0e..e5d51c1 100644
--- a/src/Spout/Writer/ODS/Manager/WorksheetManager.php
+++ b/src/Spout/Writer/ODS/Manager/WorksheetManager.php
@@ -86,7 +86,7 @@ class WorksheetManager implements WorksheetManagerInterface
* Returns the table XML root node as string.
*
* @param Worksheet $worksheet
- * @return string
node as string
+ * @return string "" node as string
*/
public function getTableElementStartAsString(Worksheet $worksheet)
{
diff --git a/src/Spout/Writer/XLSX/Manager/Style/StyleManager.php b/src/Spout/Writer/XLSX/Manager/Style/StyleManager.php
index f0ca9d9..4a72b2f 100644
--- a/src/Spout/Writer/XLSX/Manager/Style/StyleManager.php
+++ b/src/Spout/Writer/XLSX/Manager/Style/StyleManager.php
@@ -2,6 +2,7 @@
namespace Box\Spout\Writer\XLSX\Manager\Style;
+use Box\Spout\Common\Entity\Style\BorderPart;
use Box\Spout\Common\Entity\Style\Color;
use Box\Spout\Common\Entity\Style\Style;
use Box\Spout\Writer\XLSX\Helper\BorderHelper;
@@ -186,7 +187,7 @@ EOD;
$content .= '';
foreach ($registeredBorders as $styleId) {
- /** @var \Box\Spout\Common\Entity\Style\Style $style */
+ /** @var Style $style */
$style = $this->styleRegistry->getStyleFromStyleId($styleId);
$border = $style->getBorder();
$content .= '';
@@ -196,7 +197,7 @@ EOD;
foreach ($sortOrder as $partName) {
if ($border->hasPart($partName)) {
- /** @var $part \Box\Spout\Common\Entity\Style\BorderPart */
+ /** @var BorderPart $part */
$part = $border->getPart($partName);
$content .= BorderHelper::serializeBorderPart($part);
}
diff --git a/src/Spout/Writer/XLSX/Manager/WorksheetManager.php b/src/Spout/Writer/XLSX/Manager/WorksheetManager.php
index 25bb88d..1d90da5 100644
--- a/src/Spout/Writer/XLSX/Manager/WorksheetManager.php
+++ b/src/Spout/Writer/XLSX/Manager/WorksheetManager.php
@@ -240,6 +240,7 @@ EOD;
} elseif ($cell->isBoolean()) {
$cellXML .= ' t="b">' . (int) ($cell->getValue()) . '';
} elseif ($cell->isNumeric()) {
+ var_dump($cell);
$cellXML .= '>' . $this->stringHelper->formatNumericValue($cell->getValue()) . '';
} elseif ($cell->isError() && is_string($cell->getValueEvenIfError())) {
// only writes the error value if it's a string
diff --git a/tests/Spout/Common/Entity/RowTest.php b/tests/Spout/Common/Entity/RowTest.php
index 9aa12f6..bc58499 100644
--- a/tests/Spout/Common/Entity/RowTest.php
+++ b/tests/Spout/Common/Entity/RowTest.php
@@ -7,7 +7,7 @@ use Box\Spout\Common\Entity\Style\Style;
class RowTest extends \PHPUnit\Framework\TestCase
{
/**
- * @return \PHPUnit_Framework_MockObject_MockObject|Style
+ * @return \PHPUnit\Framework\MockObject\MockObject|Style
*/
private function getStyleMock()
{
@@ -15,7 +15,7 @@ class RowTest extends \PHPUnit\Framework\TestCase
}
/**
- * @return \PHPUnit_Framework_MockObject_MockObject|Cell
+ * @return \PHPUnit\Framework\MockObject\MockObject|Cell
*/
private function getCellMock()
{
diff --git a/tests/Spout/Common/Entity/Style/BorderTest.php b/tests/Spout/Common/Entity/Style/BorderTest.php
index fa1e7ef..bb89af7 100644
--- a/tests/Spout/Common/Entity/Style/BorderTest.php
+++ b/tests/Spout/Common/Entity/Style/BorderTest.php
@@ -113,7 +113,7 @@ class BorderTest extends TestCase
$border->addPart($borderPart);
$this->assertCount(1, $border->getParts());
- /** @var $part BorderPart */
+ /** @var BorderPart $part */
$part = $border->getParts()[$allowedName];
$this->assertEquals($allowedStyle, $part->getStyle());
diff --git a/tests/Spout/Common/Helper/EncodingHelperTest.php b/tests/Spout/Common/Helper/EncodingHelperTest.php
index 8d3c158..ad4dd91 100644
--- a/tests/Spout/Common/Helper/EncodingHelperTest.php
+++ b/tests/Spout/Common/Helper/EncodingHelperTest.php
@@ -68,15 +68,15 @@ class EncodingHelperTest extends TestCase
$this->expectException(EncodingConversionException::class);
$helperStub = $this->getMockBuilder('\Box\Spout\Common\Helper\GlobalFunctionsHelper')
- ->setMethods(['iconv', 'mb_convert_encoding'])
+ ->onlyMethods(['iconv', 'mb_convert_encoding'])
->getMock();
$helperStub->method('iconv')->willReturn(false);
$helperStub->method('mb_convert_encoding')->willReturn(false);
- /** @var EncodingHelper $encodingHelperStub */
+ /** @var EncodingHelper|\PHPUnit\Framework\MockObject\MockObject|\PHPUnit\Framework\MockObject\MockObject $encodingHelperStub */
$encodingHelperStub = $this->getMockBuilder('\Box\Spout\Common\Helper\EncodingHelper')
->setConstructorArgs([$helperStub])
- ->setMethods(['canUseIconv', 'canUseMbString'])
+ ->onlyMethods(['canUseIconv', 'canUseMbString'])
->getMock();
$encodingHelperStub->method('canUseIconv')->willReturn($shouldUseIconv);
$encodingHelperStub->method('canUseMbString')->willReturn(true);
@@ -91,10 +91,10 @@ class EncodingHelperTest extends TestCase
{
$this->expectException(EncodingConversionException::class);
- /** @var EncodingHelper $encodingHelperStub */
+ /** @var EncodingHelper|\PHPUnit\Framework\MockObject\MockObject|\PHPUnit\Framework\MockObject\MockObject $encodingHelperStub */
$encodingHelperStub = $this->getMockBuilder('\Box\Spout\Common\Helper\EncodingHelper')
->disableOriginalConstructor()
- ->setMethods(['canUseIconv', 'canUseMbString'])
+ ->onlyMethods(['canUseIconv', 'canUseMbString'])
->getMock();
$encodingHelperStub->method('canUseIconv')->willReturn(false);
$encodingHelperStub->method('canUseMbString')->willReturn(false);
@@ -110,10 +110,10 @@ class EncodingHelperTest extends TestCase
*/
public function testAttemptConversionToUTF8ShouldReturnReencodedString($shouldUseIconv)
{
- /** @var EncodingHelper $encodingHelperStub */
+ /** @var EncodingHelper|\PHPUnit\Framework\MockObject\MockObject $encodingHelperStub */
$encodingHelperStub = $this->getMockBuilder('\Box\Spout\Common\Helper\EncodingHelper')
->setConstructorArgs([new GlobalFunctionsHelper()])
- ->setMethods(['canUseIconv', 'canUseMbString'])
+ ->onlyMethods(['canUseIconv', 'canUseMbString'])
->getMock();
$encodingHelperStub->method('canUseIconv')->willReturn($shouldUseIconv);
$encodingHelperStub->method('canUseMbString')->willReturn(true);
@@ -129,10 +129,10 @@ class EncodingHelperTest extends TestCase
*/
public function testAttemptConversionToUTF8ShouldBeNoopWhenTargetIsUTF8()
{
- /** @var EncodingHelper $encodingHelperStub */
+ /** @var EncodingHelper|\PHPUnit\Framework\MockObject\MockObject|\PHPUnit\Framework\MockObject\MockObject $encodingHelperStub */
$encodingHelperStub = $this->getMockBuilder('\Box\Spout\Common\Helper\EncodingHelper')
->disableOriginalConstructor()
- ->setMethods(['canUseIconv'])
+ ->onlyMethods(['canUseIconv'])
->getMock();
$encodingHelperStub->expects($this->never())->method('canUseIconv');
@@ -151,15 +151,15 @@ class EncodingHelperTest extends TestCase
$this->expectException(EncodingConversionException::class);
$helperStub = $this->getMockBuilder('\Box\Spout\Common\Helper\GlobalFunctionsHelper')
- ->setMethods(['iconv', 'mb_convert_encoding'])
+ ->onlyMethods(['iconv', 'mb_convert_encoding'])
->getMock();
$helperStub->method('iconv')->willReturn(false);
$helperStub->method('mb_convert_encoding')->willReturn(false);
- /** @var EncodingHelper $encodingHelperStub */
+ /** @var EncodingHelper|\PHPUnit\Framework\MockObject\MockObject|\PHPUnit\Framework\MockObject\MockObject $encodingHelperStub */
$encodingHelperStub = $this->getMockBuilder('\Box\Spout\Common\Helper\EncodingHelper')
->setConstructorArgs([$helperStub])
- ->setMethods(['canUseIconv', 'canUseMbString'])
+ ->onlyMethods(['canUseIconv', 'canUseMbString'])
->getMock();
$encodingHelperStub->method('canUseIconv')->willReturn($shouldUseIconv);
$encodingHelperStub->method('canUseMbString')->willReturn(true);
@@ -174,10 +174,10 @@ class EncodingHelperTest extends TestCase
{
$this->expectException(EncodingConversionException::class);
- /** @var EncodingHelper $encodingHelperStub */
+ /** @var EncodingHelper|\PHPUnit\Framework\MockObject\MockObject|\PHPUnit\Framework\MockObject\MockObject $encodingHelperStub */
$encodingHelperStub = $this->getMockBuilder('\Box\Spout\Common\Helper\EncodingHelper')
->disableOriginalConstructor()
- ->setMethods(['canUseIconv', 'canUseMbString'])
+ ->onlyMethods(['canUseIconv', 'canUseMbString'])
->getMock();
$encodingHelperStub->method('canUseIconv')->willReturn(false);
$encodingHelperStub->method('canUseMbString')->willReturn(false);
@@ -193,10 +193,10 @@ class EncodingHelperTest extends TestCase
*/
public function testAttemptConversionFromUTF8ShouldReturnReencodedString($shouldUseIconv)
{
- /** @var EncodingHelper $encodingHelperStub */
+ /** @var EncodingHelper|\PHPUnit\Framework\MockObject\MockObject $encodingHelperStub */
$encodingHelperStub = $this->getMockBuilder('\Box\Spout\Common\Helper\EncodingHelper')
->setConstructorArgs([new GlobalFunctionsHelper()])
- ->setMethods(['canUseIconv', 'canUseMbString'])
+ ->onlyMethods(['canUseIconv', 'canUseMbString'])
->getMock();
$encodingHelperStub->method('canUseIconv')->willReturn($shouldUseIconv);
$encodingHelperStub->method('canUseMbString')->willReturn(true);
@@ -212,10 +212,10 @@ class EncodingHelperTest extends TestCase
*/
public function testAttemptConversionFromUTF8ShouldBeNoopWhenTargetIsUTF8()
{
- /** @var EncodingHelper $encodingHelperStub */
+ /** @var EncodingHelper|\PHPUnit\Framework\MockObject\MockObject $encodingHelperStub */
$encodingHelperStub = $this->getMockBuilder('\Box\Spout\Common\Helper\EncodingHelper')
->disableOriginalConstructor()
- ->setMethods(['canUseIconv'])
+ ->onlyMethods(['canUseIconv'])
->getMock();
$encodingHelperStub->expects($this->never())->method('canUseIconv');
diff --git a/tests/Spout/Common/Helper/FileSystemHelperTest.php b/tests/Spout/Common/Helper/FileSystemHelperTest.php
index 7eb0183..0eb314e 100644
--- a/tests/Spout/Common/Helper/FileSystemHelperTest.php
+++ b/tests/Spout/Common/Helper/FileSystemHelperTest.php
@@ -10,7 +10,7 @@ use PHPUnit\Framework\TestCase;
*/
class FileSystemHelperTest extends TestCase
{
- /** @var \Box\Spout\Writer\XLSX\Helper\FileSystemHelper */
+ /** @var FileSystemHelper */
protected $fileSystemHelper;
/**
diff --git a/tests/Spout/Reader/CSV/ReaderTest.php b/tests/Spout/Reader/CSV/ReaderTest.php
index 1d092f0..78f1d42 100644
--- a/tests/Spout/Reader/CSV/ReaderTest.php
+++ b/tests/Spout/Reader/CSV/ReaderTest.php
@@ -47,9 +47,9 @@ class ReaderTest extends TestCase
{
$this->expectException(IOException::class);
- /** @var \Box\Spout\Common\Helper\GlobalFunctionsHelper|\PHPUnit_Framework_MockObject_MockObject $helperStub */
+ /** @var \Box\Spout\Common\Helper\GlobalFunctionsHelper|\PHPUnit\Framework\MockObject\MockObject $helperStub */
$helperStub = $this->getMockBuilder('\Box\Spout\Common\Helper\GlobalFunctionsHelper')
- ->setMethods(['is_readable'])
+ ->onlyMethods(['is_readable'])
->getMock();
$helperStub->method('is_readable')->willReturn(false);
@@ -66,9 +66,9 @@ class ReaderTest extends TestCase
{
$this->expectException(IOException::class);
- /** @var \Box\Spout\Common\Helper\GlobalFunctionsHelper|\PHPUnit_Framework_MockObject_MockObject $helperStub */
+ /** @var \Box\Spout\Common\Helper\GlobalFunctionsHelper|\PHPUnit\Framework\MockObject\MockObject $helperStub */
$helperStub = $this->getMockBuilder('\Box\Spout\Common\Helper\GlobalFunctionsHelper')
- ->setMethods(['fopen'])
+ ->onlyMethods(['fopen'])
->getMock();
$helperStub->method('fopen')->willReturn(false);
@@ -304,9 +304,9 @@ class ReaderTest extends TestCase
$allRows = [];
$resourcePath = $this->getResourcePath($fileName);
- /** @var \Box\Spout\Common\Helper\GlobalFunctionsHelper|\PHPUnit_Framework_MockObject_MockObject $helperStub */
+ /** @var \Box\Spout\Common\Helper\GlobalFunctionsHelper|\PHPUnit\Framework\MockObject\MockObject $helperStub */
$helperStub = $this->getMockBuilder('\Box\Spout\Common\Helper\GlobalFunctionsHelper')
- ->setMethods(['function_exists'])
+ ->onlyMethods(['function_exists'])
->getMock();
$returnValueMap = [
diff --git a/tests/Spout/Reader/XLSX/Manager/SharedStringsCaching/CachingStrategyFactoryTest.php b/tests/Spout/Reader/XLSX/Manager/SharedStringsCaching/CachingStrategyFactoryTest.php
index 6216b40..5b75cbd 100644
--- a/tests/Spout/Reader/XLSX/Manager/SharedStringsCaching/CachingStrategyFactoryTest.php
+++ b/tests/Spout/Reader/XLSX/Manager/SharedStringsCaching/CachingStrategyFactoryTest.php
@@ -36,11 +36,11 @@ class CachingStrategyFactoryTest extends TestCase
*/
public function testCreateBestCachingStrategy($sharedStringsUniqueCount, $memoryLimitInKB, $expectedStrategyClassName)
{
- /** @var CachingStrategyFactory|\PHPUnit_Framework_MockObject_MockObject $factoryStub */
+ /** @var CachingStrategyFactory|\PHPUnit\Framework\MockObject\MockObject $factoryStub */
$factoryStub = $this
->getMockBuilder('\Box\Spout\Reader\XLSX\Manager\SharedStringsCaching\CachingStrategyFactory')
->disableOriginalConstructor()
- ->setMethods(['getMemoryLimitInKB'])
+ ->onlyMethods(['getMemoryLimitInKB'])
->getMock();
$factoryStub->method('getMemoryLimitInKB')->willReturn($memoryLimitInKB);
@@ -84,11 +84,11 @@ class CachingStrategyFactoryTest extends TestCase
*/
public function testGetMemoryLimitInKB($memoryLimitFormatted, $expectedMemoryLimitInKB)
{
- /** @var CachingStrategyFactory|\PHPUnit_Framework_MockObject_MockObject $factoryStub */
+ /** @var CachingStrategyFactory|\PHPUnit\Framework\MockObject\MockObject $factoryStub */
$factoryStub = $this
->getMockBuilder('\Box\Spout\Reader\XLSX\Manager\SharedStringsCaching\CachingStrategyFactory')
->disableOriginalConstructor()
- ->setMethods(['getMemoryLimitFromIni'])
+ ->onlyMethods(['getMemoryLimitFromIni'])
->getMock();
$factoryStub->method('getMemoryLimitFromIni')->willReturn($memoryLimitFormatted);
diff --git a/tests/Spout/Reader/XLSX/Manager/SharedStringsManagerTest.php b/tests/Spout/Reader/XLSX/Manager/SharedStringsManagerTest.php
index f344b35..4c3e512 100644
--- a/tests/Spout/Reader/XLSX/Manager/SharedStringsManagerTest.php
+++ b/tests/Spout/Reader/XLSX/Manager/SharedStringsManagerTest.php
@@ -19,7 +19,7 @@ class SharedStringsManagerTest extends TestCase
{
use TestUsingResource;
- /** @var SharedStringsManager */
+ /** @var SharedStringsManager|null */
private $sharedStringsManager;
/**
diff --git a/tests/Spout/Reader/XLSX/Manager/StyleManagerTest.php b/tests/Spout/Reader/XLSX/Manager/StyleManagerTest.php
index 794f4bc..7a98f0e 100644
--- a/tests/Spout/Reader/XLSX/Manager/StyleManagerTest.php
+++ b/tests/Spout/Reader/XLSX/Manager/StyleManagerTest.php
@@ -21,10 +21,10 @@ class StyleManagerTest extends TestCase
$workbookRelationshipsManager = $this->createMock(WorkbookRelationshipsManager::class);
$workbookRelationshipsManager->method('hasStylesXMLFile')->willReturn(true);
- /** @var StyleManager $styleManager */
+ /** @var StyleManager|\PHPUnit\Framework\MockObject\MockObject $styleManager */
$styleManager = $this->getMockBuilder('\Box\Spout\Reader\XLSX\Manager\StyleManager')
->setConstructorArgs(['/path/to/file.xlsx', $workbookRelationshipsManager, $entityFactory])
- ->setMethods(['getCustomNumberFormats', 'getStylesAttributes'])
+ ->onlyMethods(['getCustomNumberFormats', 'getStylesAttributes'])
->getMock();
$styleManager->method('getStylesAttributes')->willReturn($styleAttributes);
diff --git a/tests/Spout/ReflectionHelper.php b/tests/Spout/ReflectionHelper.php
index d958df0..e046046 100644
--- a/tests/Spout/ReflectionHelper.php
+++ b/tests/Spout/ReflectionHelper.php
@@ -95,7 +95,6 @@ class ReflectionHelper
*
* @param object $object
* @param string $methodName
- * @param *mixed|null $params
*
* @return mixed|null
*/
diff --git a/tests/Spout/Writer/ODS/WriterTest.php b/tests/Spout/Writer/ODS/WriterTest.php
index dc86f7c..1d1ff44 100644
--- a/tests/Spout/Writer/ODS/WriterTest.php
+++ b/tests/Spout/Writer/ODS/WriterTest.php
@@ -348,6 +348,7 @@ class WriterTest extends TestCase
$fileName = 'test_add_row_should_use_number_columns_repeated.ods';
$this->writeToODSFile($this->createRowsFromValues([$dataRow]), $fileName);
+ /** @var \DOMElement $sheetXmlNode */
$sheetXmlNode = $this->getSheetXmlNode($fileName, 1);
$tableCellNodes = $sheetXmlNode->getElementsByTagName('table-cell');
diff --git a/tests/Spout/Writer/ODS/WriterWithStyleTest.php b/tests/Spout/Writer/ODS/WriterWithStyleTest.php
index 75177da..3c7a6fd 100644
--- a/tests/Spout/Writer/ODS/WriterWithStyleTest.php
+++ b/tests/Spout/Writer/ODS/WriterWithStyleTest.php
@@ -88,6 +88,7 @@ class WriterWithStyleTest extends TestCase
$this->assertCount(3, $cellStyleElements, 'There should be 3 separate cell styles, including the default one.');
// Second font should contain data from the first created style
+ /** @var \DOMElement $customFont1Element */
$customFont1Element = $cellStyleElements[1];
$this->assertFirstChildHasAttributeEquals('bold', $customFont1Element, 'text-properties', 'fo:font-weight');
$this->assertFirstChildHasAttributeEquals('italic', $customFont1Element, 'text-properties', 'fo:font-style');
@@ -95,6 +96,7 @@ class WriterWithStyleTest extends TestCase
$this->assertFirstChildHasAttributeEquals('solid', $customFont1Element, 'text-properties', 'style:text-line-through-style');
// Third font should contain data from the second created style
+ /** @var \DOMElement $customFont2Element */
$customFont2Element = $cellStyleElements[2];
$this->assertFirstChildHasAttributeEquals('15pt', $customFont2Element, 'text-properties', 'fo:font-size');
$this->assertFirstChildHasAttributeEquals('#' . Color::RED, $customFont2Element, 'text-properties', 'fo:color');
@@ -397,7 +399,7 @@ class WriterWithStyleTest extends TestCase
/**
* @param string $fileName
- * @return \DOMNode[]
+ * @return \DOMElement[]
*/
private function getCellElementsFromContentXmlFile($fileName)
{
@@ -410,7 +412,9 @@ class WriterWithStyleTest extends TestCase
while ($xmlReader->read()) {
if ($xmlReader->isPositionedOnStartingNode('table:table-cell') && $xmlReader->getAttribute('office:value-type') !== null) {
- $cellElements[] = $xmlReader->expand();
+ /** @var \DOMElement $cellElement */
+ $cellElement = $xmlReader->expand();
+ $cellElements[] = $cellElement;
}
}
@@ -421,7 +425,7 @@ class WriterWithStyleTest extends TestCase
/**
* @param string $fileName
- * @return \DOMNode[]
+ * @return \DOMElement[]
*/
private function getCellStyleElementsFromContentXmlFile($fileName)
{
@@ -434,7 +438,9 @@ class WriterWithStyleTest extends TestCase
while ($xmlReader->read()) {
if ($xmlReader->isPositionedOnStartingNode('style:style') && $xmlReader->getAttribute('style:family') === 'table-cell') {
- $cellStyleElements[] = $xmlReader->expand();
+ /** @var \DOMElement $cellStyleElement */
+ $cellStyleElement = $xmlReader->expand();
+ $cellStyleElements[] = $cellStyleElement;
}
}
@@ -446,7 +452,7 @@ class WriterWithStyleTest extends TestCase
/**
* @param string $fileName
* @param string $section
- * @return \DomNode
+ * @return \DOMElement
*/
private function getXmlSectionFromStylesXmlFile($fileName, $section)
{
@@ -456,12 +462,15 @@ class WriterWithStyleTest extends TestCase
$xmlReader->openFileInZip($resourcePath, 'styles.xml');
$xmlReader->readUntilNodeFound($section);
- return $xmlReader->expand();
+ /** @var \DOMElement $element */
+ $element = $xmlReader->expand();
+
+ return $element;
}
/**
* @param string $expectedValue
- * @param \DOMNode $parentElement
+ * @param \DOMElement $parentElement
* @param string $childTagName
* @param string $attributeName
* @return void
diff --git a/tests/Spout/Writer/XLSX/Manager/Style/StyleManagerTest.php b/tests/Spout/Writer/XLSX/Manager/Style/StyleManagerTest.php
index 3bb0f42..1c21cc3 100644
--- a/tests/Spout/Writer/XLSX/Manager/Style/StyleManagerTest.php
+++ b/tests/Spout/Writer/XLSX/Manager/Style/StyleManagerTest.php
@@ -40,7 +40,7 @@ class StyleManagerTest extends TestCase
{
$styleRegistryMock = $this->getMockBuilder(StyleRegistry::class)
->disableOriginalConstructor()
- ->setMethods(['getFillIdForStyleId', 'getBorderIdForStyleId'])
+ ->onlyMethods(['getFillIdForStyleId', 'getBorderIdForStyleId'])
->getMock();
$styleRegistryMock
diff --git a/tests/Spout/Writer/XLSX/WriterPerfTest.php b/tests/Spout/Writer/XLSX/WriterPerfTest.php
index 66ff337..a0f6e90 100644
--- a/tests/Spout/Writer/XLSX/WriterPerfTest.php
+++ b/tests/Spout/Writer/XLSX/WriterPerfTest.php
@@ -102,7 +102,7 @@ class WriterPerfTest extends TestCase
/**
* @param string $filePath
- * @return string
+ * @return int
*/
private function getLasRowNumberForFile($filePath)
{
diff --git a/tests/Spout/Writer/XLSX/WriterWithStyleTest.php b/tests/Spout/Writer/XLSX/WriterWithStyleTest.php
index 2571df4..7237039 100644
--- a/tests/Spout/Writer/XLSX/WriterWithStyleTest.php
+++ b/tests/Spout/Writer/XLSX/WriterWithStyleTest.php
@@ -92,6 +92,7 @@ class WriterWithStyleTest extends TestCase
$this->assertEquals(3, $fontElements->length, 'There should be 3 associated "font" elements, including the default one.');
// First font should be the default one
+ /** @var \DOMElement $defaultFontElement */
$defaultFontElement = $fontElements->item(0);
$this->assertChildrenNumEquals(3, $defaultFontElement, 'The default font should only have 3 properties.');
$this->assertFirstChildHasAttributeEquals((string) OptionsManager::DEFAULT_FONT_SIZE, $defaultFontElement, 'sz', 'val');
@@ -99,6 +100,7 @@ class WriterWithStyleTest extends TestCase
$this->assertFirstChildHasAttributeEquals(OptionsManager::DEFAULT_FONT_NAME, $defaultFontElement, 'name', 'val');
// Second font should contain data from the first created style
+ /** @var \DOMElement $secondFontElement */
$secondFontElement = $fontElements->item(1);
$this->assertChildrenNumEquals(7, $secondFontElement, 'The font should only have 7 properties (4 custom styles + 3 default styles).');
$this->assertChildExists($secondFontElement, 'b');
@@ -110,6 +112,7 @@ class WriterWithStyleTest extends TestCase
$this->assertFirstChildHasAttributeEquals(OptionsManager::DEFAULT_FONT_NAME, $secondFontElement, 'name', 'val');
// Third font should contain data from the second created style
+ /** @var \DOMElement $thirdFontElement */
$thirdFontElement = $fontElements->item(2);
$this->assertChildrenNumEquals(3, $thirdFontElement, 'The font should only have 3 properties.');
$this->assertFirstChildHasAttributeEquals('15', $thirdFontElement, 'sz', 'val');
@@ -394,10 +397,14 @@ class WriterWithStyleTest extends TestCase
'3 cell xfs present - a default one and two custom ones'
);
- $firstCustomId = $styleXfsElements->childNodes->item(1)->getAttribute('fillId');
+ /** @var \DOMElement $styleXfsElementChild1 */
+ $styleXfsElementChild1 = $styleXfsElements->childNodes->item(1);
+ $firstCustomId = $styleXfsElementChild1->getAttribute('fillId');
$this->assertEquals(2, (int) $firstCustomId, 'The first custom fill id should have the index 2');
- $secondCustomId = $styleXfsElements->childNodes->item(2)->getAttribute('fillId');
+ /** @var \DOMElement $styleXfsElementChild2 */
+ $styleXfsElementChild2 = $styleXfsElements->childNodes->item(2);
+ $secondCustomId = $styleXfsElementChild2->getAttribute('fillId');
$this->assertEquals(2, (int) $secondCustomId, 'The second custom fill id should have the index 2');
}
@@ -607,7 +614,7 @@ class WriterWithStyleTest extends TestCase
/**
* @param string $fileName
* @param string $section
- * @return \DomElement
+ * @return \DOMElement
*/
private function getXmlSectionFromStylesXmlFile($fileName, $section)
{
@@ -617,6 +624,7 @@ class WriterWithStyleTest extends TestCase
$xmlReader->openFileInZip($resourcePath, 'xl/styles.xml');
$xmlReader->readUntilNodeFound($section);
+ /** @var \DOMElement $xmlSection */
$xmlSection = $xmlReader->expand();
$xmlReader->close();
@@ -626,7 +634,7 @@ class WriterWithStyleTest extends TestCase
/**
* @param string $fileName
- * @return \DOMNode[]
+ * @return \DOMElement[]
*/
private function getCellElementsFromSheetXmlFile($fileName)
{
@@ -639,7 +647,9 @@ class WriterWithStyleTest extends TestCase
while ($xmlReader->read()) {
if ($xmlReader->isPositionedOnStartingNode('c')) {
- $cellElements[] = $xmlReader->expand();
+ /** @var \DOMElement $cellElement */
+ $cellElement = $xmlReader->expand();
+ $cellElements[] = $cellElement;
}
}
@@ -650,7 +660,7 @@ class WriterWithStyleTest extends TestCase
/**
* @param string $expectedValue
- * @param \DOMNode $parentElement
+ * @param \DOMElement $parentElement
* @param string $childTagName
* @param string $attributeName
* @return void
@@ -662,7 +672,7 @@ class WriterWithStyleTest extends TestCase
/**
* @param int $expectedNumber
- * @param \DOMNode $parentElement
+ * @param \DOMElement $parentElement
* @param string $message
* @return void
*/
@@ -672,7 +682,7 @@ class WriterWithStyleTest extends TestCase
}
/**
- * @param \DOMNode $parentElement
+ * @param \DOMElement $parentElement
* @param string $childTagName
* @return void
*/