Fix code style

This commit is contained in:
Adrien Loison committed 2017-09-06 00:33:43 +02:00
1 parent 740fcfb8c1
commit b968513cb9
171 files changed
+517 -792

No files matched your search

@@ -13,8 +13,6 @@ use Box\Spout\Reader\CSV\SheetIterator;
/**
* Class EntityFactory
* Factory to create entities
*
* @package Box\Spout\Reader\CSV\Creator
*/
class EntityFactory implements EntityFactoryInterface
{
@@ -61,6 +59,7 @@ class EntityFactory implements EntityFactoryInterface
private function createRowIterator($filePointer, $optionsManager, $globalFunctionsHelper)
{
$encodingHelper = $this->helperFactory->createEncodingHelper($globalFunctionsHelper);
return new RowIterator($filePointer, $optionsManager, $encodingHelper, $globalFunctionsHelper);
}
}
@@ -9,13 +9,11 @@ use Box\Spout\Reader\Common\Entity\Options;
/**
* Class OptionsManager
* CSV Reader options manager
*
* @package Box\Spout\Reader\CSV\Manager
*/
class OptionsManager extends OptionsManagerAbstract
{
/**
* @inheritdoc
* {@inheritdoc}
*/
protected function getSupportedOptions()
{
@@ -29,7 +27,7 @@ class OptionsManager extends OptionsManagerAbstract
}
/**
* @inheritdoc
* {@inheritdoc}
*/
protected function setDefaultOptions()
{
+5 -5
View File
@@ -2,16 +2,14 @@
namespace Box\Spout\Reader\CSV;
use Box\Spout\Common\Exception\IOException;
use Box\Spout\Reader\Common\Entity\Options;
use Box\Spout\Reader\CSV\Creator\EntityFactory;
use Box\Spout\Reader\ReaderAbstract;
use Box\Spout\Common\Exception\IOException;
/**
* Class Reader
* This class provides support to read data from a CSV file.
*
* @package Box\Spout\Reader\CSV
*/
class Reader extends ReaderAbstract
{
@@ -34,6 +32,7 @@ class Reader extends ReaderAbstract
public function setFieldDelimiter($fieldDelimiter)
{
$this->optionsManager->setOption(Options::FIELD_DELIMITER, $fieldDelimiter);
return $this;
}
@@ -47,6 +46,7 @@ class Reader extends ReaderAbstract
public function setFieldEnclosure($fieldEnclosure)
{
$this->optionsManager->setOption(Options::FIELD_ENCLOSURE, $fieldEnclosure);
return $this;
}
@@ -60,6 +60,7 @@ class Reader extends ReaderAbstract
public function setEncoding($encoding)
{
$this->optionsManager->setOption(Options::ENCODING, $encoding);
return $this;
}
@@ -78,8 +79,8 @@ class Reader extends ReaderAbstract
* If setEncoding() was not called, it assumes that the file is encoded in UTF-8.
*
* @param string $filePath Path of the CSV file to be read
* @return void
* @throws \Box\Spout\Common\Exception\IOException
* @return void
*/
protected function openReader($filePath)
{
@@ -111,7 +112,6 @@ class Reader extends ReaderAbstract
return $this->sheetIterator;
}
/**
* Closes the reader. To be used after reading the file.
*
+12 -16
View File
@@ -2,17 +2,13 @@
namespace Box\Spout\Reader\CSV;
use Box\Spout\Common\Creator\HelperFactory;
use Box\Spout\Reader\Common\Entity\Options;
use Box\Spout\Reader\CSV\Creator\EntityFactory;
use Box\Spout\Reader\IteratorInterface;
use Box\Spout\Common\Helper\EncodingHelper;
use Box\Spout\Reader\Common\Entity\Options;
use Box\Spout\Reader\IteratorInterface;
/**
* Class RowIterator
* Iterate over CSV rows.
*
* @package Box\Spout\Reader\CSV
*/
class RowIterator implements IteratorInterface
{
@@ -28,7 +24,7 @@ class RowIterator implements IteratorInterface
protected $numReadRows = 0;
/** @var array|null Buffer used to store the row data, while checking if there are more rows to read */
protected $rowDataBuffer = null;
protected $rowDataBuffer;
/** @var bool Indicates whether all rows have been read */
protected $hasReachedEndOfFile = false;
@@ -70,7 +66,7 @@ class RowIterator implements IteratorInterface
/**
* Rewind the Iterator to the first element
* @link http://php.net/manual/en/iterator.rewind.php
* @see http://php.net/manual/en/iterator.rewind.php
*
* @return void
*/
@@ -100,7 +96,7 @@ class RowIterator implements IteratorInterface
/**
* Checks if current position is valid
* @link http://php.net/manual/en/iterator.valid.php
* @see http://php.net/manual/en/iterator.valid.php
*
* @return bool
*/
@@ -111,10 +107,10 @@ class RowIterator implements IteratorInterface
/**
* Move forward to next element. Reads data for the next unprocessed row.
* @link http://php.net/manual/en/iterator.next.php
* @see http://php.net/manual/en/iterator.next.php
*
* @return void
* @throws \Box\Spout\Common\Exception\EncodingConversionException If unable to convert data to UTF-8
* @return void
*/
public function next()
{
@@ -126,8 +122,8 @@ class RowIterator implements IteratorInterface
}
/**
* @return void
* @throws \Box\Spout\Common\Exception\EncodingConversionException If unable to convert data to UTF-8
* @return void
*/
protected function readDataForNextRow()
{
@@ -167,8 +163,8 @@ class RowIterator implements IteratorInterface
* As fgetcsv() does not manage correctly encoding for non UTF-8 data,
* we remove manually whitespace with ltrim or rtrim (depending on the order of the bytes)
*
* @return array|false The row for the current file pointer, encoded in UTF-8 or FALSE if nothing to read
* @throws \Box\Spout\Common\Exception\EncodingConversionException If unable to convert data to UTF-8
* @return array|false The row for the current file pointer, encoded in UTF-8 or FALSE if nothing to read
*/
protected function getNextUTF8EncodedRow()
{
@@ -178,7 +174,7 @@ class RowIterator implements IteratorInterface
}
foreach ($encodedRowData as $cellIndex => $cellValue) {
switch($this->encoding) {
switch ($this->encoding) {
case EncodingHelper::ENCODING_UTF16_LE:
case EncodingHelper::ENCODING_UTF32_LE:
// remove whitespace from the beginning of a string as fgetcsv() add extra whitespace when it try to explode non UTF-8 data
@@ -209,7 +205,7 @@ class RowIterator implements IteratorInterface
/**
* Return the current element from the buffer
* @link http://php.net/manual/en/iterator.current.php
* @see http://php.net/manual/en/iterator.current.php
*
* @return array|null
*/
@@ -220,7 +216,7 @@ class RowIterator implements IteratorInterface
/**
* Return the key of the current element
* @link http://php.net/manual/en/iterator.key.php
* @see http://php.net/manual/en/iterator.key.php
*
* @return int
*/
-3
View File
@@ -2,13 +2,10 @@
namespace Box\Spout\Reader\CSV;
use Box\Spout\Reader\CSV\Creator\EntityFactory;
use Box\Spout\Reader\SheetInterface;
/**
* Class Sheet
*
* @package Box\Spout\Reader\CSV
*/
class Sheet implements SheetInterface
{
+5 -8
View File
@@ -2,14 +2,11 @@
namespace Box\Spout\Reader\CSV;
use Box\Spout\Reader\CSV\Creator\EntityFactory;
use Box\Spout\Reader\IteratorInterface;
/**
* Class SheetIterator
* Iterate over CSV unique "sheet".
*
* @package Box\Spout\Reader\CSV
*/
class SheetIterator implements IteratorInterface
{
@@ -29,7 +26,7 @@ class SheetIterator implements IteratorInterface
/**
* Rewind the Iterator to the first element
* @link http://php.net/manual/en/iterator.rewind.php
* @see http://php.net/manual/en/iterator.rewind.php
*
* @return void
*/
@@ -40,7 +37,7 @@ class SheetIterator implements IteratorInterface
/**
* Checks if current position is valid
* @link http://php.net/manual/en/iterator.valid.php
* @see http://php.net/manual/en/iterator.valid.php
*
* @return bool
*/
@@ -51,7 +48,7 @@ class SheetIterator implements IteratorInterface
/**
* Move forward to next element
* @link http://php.net/manual/en/iterator.next.php
* @see http://php.net/manual/en/iterator.next.php
*
* @return void
*/
@@ -62,7 +59,7 @@ class SheetIterator implements IteratorInterface
/**
* Return the current element
* @link http://php.net/manual/en/iterator.current.php
* @see http://php.net/manual/en/iterator.current.php
*
* @return \Box\Spout\Reader\CSV\Sheet
*/
@@ -73,7 +70,7 @@ class SheetIterator implements IteratorInterface
/**
* Return the key of the current element
* @link http://php.net/manual/en/iterator.key.php
* @see http://php.net/manual/en/iterator.key.php
*
* @return int
*/
@@ -4,8 +4,6 @@ namespace Box\Spout\Reader\Common\Creator;
/**
* Interface EntityFactoryInterface
*
* @package Box\Spout\Reader\Common\Creator
*/
interface EntityFactoryInterface
{
@@ -5,8 +5,6 @@ namespace Box\Spout\Reader\Common\Entity;
/**
* Class Options
* Readers' options holder
*
* @package Box\Spout\Reader\Common\Entity
*/
abstract class Options
{
+2 -2
View File
@@ -5,8 +5,6 @@ namespace Box\Spout\Reader\Common;
/**
* Class ReaderOptions
* Readers' common options
*
* @package Box\Spout\Reader\Common
*/
class ReaderOptions
{
@@ -33,6 +31,7 @@ class ReaderOptions
public function setShouldFormatDates($shouldFormatDates)
{
$this->shouldFormatDates = $shouldFormatDates;
return $this;
}
@@ -53,6 +52,7 @@ class ReaderOptions
public function setShouldPreserveEmptyRows($shouldPreserveEmptyRows)
{
$this->shouldPreserveEmptyRows = $shouldPreserveEmptyRows;
return $this;
}
}
+1 -5
View File
@@ -7,8 +7,6 @@ use Box\Spout\Reader\Wrapper\XMLReader;
/**
* Class XMLProcessor
* Helps process XML files
*
* @package Box\Spout\Reader\Common
*/
class XMLProcessor
{
@@ -24,14 +22,12 @@ class XMLProcessor
const PROCESSING_CONTINUE = 1;
const PROCESSING_STOP = 2;
/** @var \Box\Spout\Reader\Wrapper\XMLReader The XMLReader object that will help read sheet's XML data */
protected $xmlReader;
/** @var array Registered callbacks */
private $callbacks = [];
/**
* @param \Box\Spout\Reader\Wrapper\XMLReader $xmlReader XMLReader object
*/
@@ -90,8 +86,8 @@ class XMLProcessor
* Resumes the reading of the XML file where it was left off.
* Stops whenever a callback indicates that reading should stop or at the end of the file.
*
* @return void
* @throws \Box\Spout\Reader\Exception\XMLProcessingException
* @return void
*/
public function readUntilStopped()
{
@@ -6,7 +6,6 @@ namespace Box\Spout\Reader\Exception;
* Class IteratorNotRewindableException
*
* @api
* @package Box\Spout\Reader\Exception
*/
class IteratorNotRewindableException extends ReaderException
{
@@ -6,7 +6,6 @@ namespace Box\Spout\Reader\Exception;
* Class NoSheetsFoundException
*
* @api
* @package Box\Spout\Reader\Exception
*/
class NoSheetsFoundException extends ReaderException
{
@@ -7,7 +7,6 @@ use Box\Spout\Common\Exception\SpoutException;
/**
* Class ReaderException
*
* @package Box\Spout\Reader\Exception
* @abstract
*/
abstract class ReaderException extends SpoutException
@@ -6,7 +6,6 @@ namespace Box\Spout\Reader\Exception;
* Class ReaderNotOpenedException
*
* @api
* @package Box\Spout\Reader\Exception
*/
class ReaderNotOpenedException extends ReaderException
{
@@ -6,7 +6,6 @@ namespace Box\Spout\Reader\Exception;
* Class SharedStringNotFoundException
*
* @api
* @package Box\Spout\Reader\Exception
*/
class SharedStringNotFoundException extends ReaderException
{
@@ -4,8 +4,6 @@ namespace Box\Spout\Reader\Exception;
/**
* Class XMLProcessingException
*
* @package Box\Spout\Reader\Exception
*/
class XMLProcessingException extends ReaderException
{
-2
View File
@@ -4,8 +4,6 @@ namespace Box\Spout\Reader;
/**
* Interface IteratorInterface
*
* @package Box\Spout\Reader
*/
interface IteratorInterface extends \Iterator
{
@@ -2,8 +2,6 @@
namespace Box\Spout\Reader\ODS\Creator;
use Box\Spout\Common\Helper\GlobalFunctionsHelper;
use Box\Spout\Common\Manager\OptionsManagerInterface;
use Box\Spout\Reader\Common\Creator\EntityFactoryInterface;
use Box\Spout\Reader\Common\Entity\Options;
use Box\Spout\Reader\Common\XMLProcessor;
@@ -15,8 +13,6 @@ use Box\Spout\Reader\Wrapper\XMLReader;
/**
* Class EntityFactory
* Factory to create entities
*
* @package Box\Spout\Reader\ODS\Creator
*/
class EntityFactory implements EntityFactoryInterface
{
@@ -5,12 +5,9 @@ namespace Box\Spout\Reader\ODS\Creator;
use Box\Spout\Reader\ODS\Helper\CellValueFormatter;
use Box\Spout\Reader\ODS\Helper\SettingsHelper;
/**
* Class EntityFactory
* Factory to create helpers
*
* @package Box\Spout\Reader\ODS\Creator
*/
class HelperFactory extends \Box\Spout\Common\Creator\HelperFactory
{
@@ -21,6 +18,7 @@ class HelperFactory extends \Box\Spout\Common\Creator\HelperFactory
public function createCellValueFormatter($shouldFormatDates)
{
$escaper = $this->createStringsEscaper();
return new CellValueFormatter($shouldFormatDates, $escaper);
}
@@ -38,7 +36,7 @@ class HelperFactory extends \Box\Spout\Common\Creator\HelperFactory
*/
public function createStringsEscaper()
{
/** @noinspection PhpUnnecessaryFullyQualifiedNameInspection */
/* @noinspection PhpUnnecessaryFullyQualifiedNameInspection */
return new \Box\Spout\Common\Helper\Escaper\ODS();
}
}
@@ -5,8 +5,6 @@ namespace Box\Spout\Reader\ODS\Helper;
/**
* Class CellValueFormatter
* This class provides helper functions to format cell values
*
* @package Box\Spout\Reader\ODS\Helper
*/
class CellValueFormatter
{
@@ -100,11 +98,11 @@ class CellValueFormatter
foreach ($pNode->childNodes as $childNode) {
if ($childNode instanceof \DOMText) {
$currentPValue .= $childNode->nodeValue;
} else if ($childNode->nodeName === self::XML_NODE_S) {
} elseif ($childNode->nodeName === self::XML_NODE_S) {
$spaceAttribute = $childNode->getAttribute(self::XML_ATTRIBUTE_C);
$numSpaces = (!empty($spaceAttribute)) ? intval($spaceAttribute) : 1;
$numSpaces = (!empty($spaceAttribute)) ? (int) $spaceAttribute : 1;
$currentPValue .= str_repeat(' ', $numSpaces);
} else if ($childNode->nodeName === self::XML_NODE_A || $childNode->nodeName === self::XML_NODE_SPAN) {
} elseif ($childNode->nodeName === self::XML_NODE_A || $childNode->nodeName === self::XML_NODE_SPAN) {
$currentPValue .= $childNode->nodeValue;
}
}
@@ -114,6 +112,7 @@ class CellValueFormatter
$escapedCellValue = implode("\n", $pNodeValues);
$cellValue = $this->escaper->unescape($escapedCellValue);
return $cellValue;
}
@@ -126,9 +125,11 @@ class CellValueFormatter
protected function formatFloatCellValue($node)
{
$nodeValue = $node->getAttribute(self::XML_ATTRIBUTE_VALUE);
$nodeIntValue = intval($nodeValue);
$nodeIntValue = (int) $nodeValue;
$nodeFloatValue = (float) $nodeValue;
$cellValue = ((float) $nodeIntValue === $nodeFloatValue) ? $nodeIntValue : $nodeFloatValue;
return $cellValue;
}
@@ -141,6 +142,7 @@ class CellValueFormatter
protected function formatBooleanCellValue($node)
{
$nodeValue = $node->getAttribute(self::XML_ATTRIBUTE_BOOLEAN_VALUE);
return (bool) $nodeValue;
}
@@ -4,13 +4,10 @@ namespace Box\Spout\Reader\ODS\Helper;
use Box\Spout\Reader\Exception\XMLProcessingException;
use Box\Spout\Reader\ODS\Creator\EntityFactory;
use Box\Spout\Reader\Wrapper\XMLReader;
/**
* Class SettingsHelper
* This class provides helper functions to extract data from the "settings.xml" file.
*
* @package Box\Spout\Reader\ODS\Helper
*/
class SettingsHelper
{
@@ -8,13 +8,11 @@ use Box\Spout\Reader\Common\Entity\Options;
/**
* Class OptionsManager
* ODS Reader options manager
*
* @package Box\Spout\Reader\ODS\Manager
*/
class OptionsManager extends OptionsManagerAbstract
{
/**
* @inheritdoc
* {@inheritdoc}
*/
protected function getSupportedOptions()
{
@@ -25,7 +23,7 @@ class OptionsManager extends OptionsManagerAbstract
}
/**
* @inheritdoc
* {@inheritdoc}
*/
protected function setDefaultOptions()
{
+1 -3
View File
@@ -9,8 +9,6 @@ use Box\Spout\Reader\ReaderAbstract;
/**
* Class Reader
* This class provides support to read data from a ODS file
*
* @package Box\Spout\Reader\ODS
*/
class Reader extends ReaderAbstract
{
@@ -34,9 +32,9 @@ class Reader extends ReaderAbstract
* Opens the file at the given file path to make it ready to be read.
*
* @param string $filePath Path of the file to be read
* @return void
* @throws \Box\Spout\Common\Exception\IOException If the file at the given path or its content cannot be read
* @throws \Box\Spout\Reader\Exception\NoSheetsFoundException If there are no sheets in the file
* @return void
*/
protected function openReader($filePath)
{
+15 -19
View File
@@ -4,19 +4,15 @@ namespace Box\Spout\Reader\ODS;
use Box\Spout\Common\Exception\IOException;
use Box\Spout\Reader\Common\Entity\Options;
use Box\Spout\Reader\Common\XMLProcessor;
use Box\Spout\Reader\Exception\IteratorNotRewindableException;
use Box\Spout\Reader\Exception\XMLProcessingException;
use Box\Spout\Reader\IteratorInterface;
use Box\Spout\Reader\ODS\Creator\EntityFactory;
use Box\Spout\Reader\ODS\Creator\HelperFactory;
use Box\Spout\Reader\ODS\Helper\CellValueFormatter;
use Box\Spout\Reader\Wrapper\XMLReader;
use Box\Spout\Reader\Common\XMLProcessor;
/**
* Class RowIterator
*
* @package Box\Spout\Reader\ODS
*/
class RowIterator implements IteratorInterface
{
@@ -49,7 +45,7 @@ class RowIterator implements IteratorInterface
protected $currentlyProcessedRowData = [];
/** @var array|null Buffer used to store the row data, while checking if there are more rows to read */
protected $rowDataBuffer = null;
protected $rowDataBuffer;
/** @var bool Indicates whether all rows have been read */
protected $hasReachedEndOfFile = false;
@@ -61,7 +57,7 @@ class RowIterator implements IteratorInterface
protected $nextRowIndexToBeProcessed = 1;
/** @var mixed|null Value of the last processed cell (because when reading cell at column N+1, cell N is processed) */
protected $lastProcessedCellValue = null;
protected $lastProcessedCellValue;
/** @var int Number of times the last processed row should be repeated */
protected $numRowsRepeated = 1;
@@ -72,7 +68,6 @@ class RowIterator implements IteratorInterface
/** @var bool Whether at least one cell has been read for the row currently being processed */
protected $hasAlreadyReadOneCellInCurrentRow = false;
/**
* @param XMLReader $xmlReader XML Reader, positioned on the "<table:table>" element
* @param \Box\Spout\Common\Manager\OptionsManagerInterface $optionsManager Reader's options manager
@@ -96,10 +91,10 @@ class RowIterator implements IteratorInterface
/**
* Rewind the Iterator to the first element.
* NOTE: It can only be done once, as it is not possible to read an XML file backwards.
* @link http://php.net/manual/en/iterator.rewind.php
* @see http://php.net/manual/en/iterator.rewind.php
*
* @return void
* @throws \Box\Spout\Reader\Exception\IteratorNotRewindableException If the iterator is rewound more than once
* @return void
*/
public function rewind()
{
@@ -121,7 +116,7 @@ class RowIterator implements IteratorInterface
/**
* Checks if current position is valid
* @link http://php.net/manual/en/iterator.valid.php
* @see http://php.net/manual/en/iterator.valid.php
*
* @return bool
*/
@@ -132,11 +127,11 @@ class RowIterator implements IteratorInterface
/**
* Move forward to next element. Empty rows will be skipped.
* @link http://php.net/manual/en/iterator.next.php
* @see http://php.net/manual/en/iterator.next.php
*
* @return void
* @throws \Box\Spout\Reader\Exception\SharedStringNotFoundException If a shared string was not found
* @throws \Box\Spout\Common\Exception\IOException If unable to read the sheet data XML
* @return void
*/
public function next()
{
@@ -167,9 +162,9 @@ class RowIterator implements IteratorInterface
}
/**
* @return void
* @throws \Box\Spout\Reader\Exception\SharedStringNotFoundException If a shared string was not found
* @throws \Box\Spout\Common\Exception\IOException If unable to read the sheet data XML
* @return void
*/
protected function readDataForNextRow()
{
@@ -280,7 +275,8 @@ class RowIterator implements IteratorInterface
protected function getNumRowsRepeatedForCurrentNode($xmlReader)
{
$numRowsRepeated = $xmlReader->getAttribute(self::XML_ATTRIBUTE_NUM_ROWS_REPEATED);
return ($numRowsRepeated !== null) ? intval($numRowsRepeated) : 1;
return ($numRowsRepeated !== null) ? (int) $numRowsRepeated : 1;
}
/**
@@ -290,7 +286,8 @@ class RowIterator implements IteratorInterface
protected function getNumColumnsRepeatedForCurrentNode($xmlReader)
{
$numColumnsRepeated = $xmlReader->getAttribute(self::XML_ATTRIBUTE_NUM_COLUMNS_REPEATED);
return ($numColumnsRepeated !== null) ? intval($numColumnsRepeated) : 1;
return ($numColumnsRepeated !== null) ? (int) $numColumnsRepeated : 1;
}
/**
@@ -324,7 +321,7 @@ class RowIterator implements IteratorInterface
/**
* Return the current element, from the buffer.
* @link http://php.net/manual/en/iterator.current.php
* @see http://php.net/manual/en/iterator.current.php
*
* @return array|null
*/
@@ -335,7 +332,7 @@ class RowIterator implements IteratorInterface
/**
* Return the key of the current element
* @link http://php.net/manual/en/iterator.key.php
* @see http://php.net/manual/en/iterator.key.php
*
* @return int
*/
@@ -344,7 +341,6 @@ class RowIterator implements IteratorInterface
return $this->lastRowIndexProcessed;
}
/**
* Cleans up what was created to iterate over the object.
*
-4
View File
@@ -2,15 +2,11 @@
namespace Box\Spout\Reader\ODS;
use Box\Spout\Reader\ODS\Creator\EntityFactory;
use Box\Spout\Reader\SheetInterface;
use Box\Spout\Reader\Wrapper\XMLReader;
/**
* Class Sheet
* Represents a sheet within a ODS file
*
* @package Box\Spout\Reader\ODS
*/
class Sheet implements SheetInterface
{
+8 -11
View File
@@ -6,15 +6,12 @@ use Box\Spout\Common\Exception\IOException;
use Box\Spout\Reader\Exception\XMLProcessingException;
use Box\Spout\Reader\IteratorInterface;
use Box\Spout\Reader\ODS\Creator\EntityFactory;
use Box\Spout\Reader\ODS\Creator\HelperFactory;
use Box\Spout\Reader\ODS\Helper\SettingsHelper;
use Box\Spout\Reader\Wrapper\XMLReader;
/**
* Class SheetIterator
* Iterate over ODS sheet.
*
* @package Box\Spout\Reader\ODS
*/
class SheetIterator implements IteratorInterface
{
@@ -67,10 +64,10 @@ class SheetIterator implements IteratorInterface
/**
* Rewind the Iterator to the first element
* @link http://php.net/manual/en/iterator.rewind.php
* @see http://php.net/manual/en/iterator.rewind.php
*
* @return void
* @throws \Box\Spout\Common\Exception\IOException If unable to open the XML file containing sheets' data
* @return void
*/
public function rewind()
{
@@ -84,15 +81,15 @@ class SheetIterator implements IteratorInterface
try {
$this->hasFoundSheet = $this->xmlReader->readUntilNodeFound(self::XML_NODE_TABLE);
} catch (XMLProcessingException $exception) {
throw new IOException("The content.xml file is invalid and cannot be read. [{$exception->getMessage()}]");
}
throw new IOException("The content.xml file is invalid and cannot be read. [{$exception->getMessage()}]");
}
$this->currentSheetIndex = 0;
}
/**
* Checks if current position is valid
* @link http://php.net/manual/en/iterator.valid.php
* @see http://php.net/manual/en/iterator.valid.php
*
* @return bool
*/
@@ -103,7 +100,7 @@ class SheetIterator implements IteratorInterface
/**
* Move forward to next element
* @link http://php.net/manual/en/iterator.next.php
* @see http://php.net/manual/en/iterator.next.php
*
* @return void
*/
@@ -118,7 +115,7 @@ class SheetIterator implements IteratorInterface
/**
* Return the current element
* @link http://php.net/manual/en/iterator.current.php
* @see http://php.net/manual/en/iterator.current.php
*
* @return \Box\Spout\Reader\ODS\Sheet
*/
@@ -151,7 +148,7 @@ class SheetIterator implements IteratorInterface
/**
* Return the key of the current element
* @link http://php.net/manual/en/iterator.key.php
* @see http://php.net/manual/en/iterator.key.php
*
* @return int
*/
+11 -6
View File
@@ -12,7 +12,6 @@ use Box\Spout\Reader\Exception\ReaderNotOpenedException;
/**
* Class ReaderAbstract
*
* @package Box\Spout\Reader
* @abstract
*/
abstract class ReaderAbstract implements ReaderInterface
@@ -66,8 +65,8 @@ abstract class ReaderAbstract implements ReaderInterface
public function __construct(
OptionsManagerInterface $optionsManager,
GlobalFunctionsHelper $globalFunctionsHelper,
EntityFactoryInterface $entityFactory)
{
EntityFactoryInterface $entityFactory
) {
$this->optionsManager = $optionsManager;
$this->globalFunctionsHelper = $globalFunctionsHelper;
$this->entityFactory = $entityFactory;
@@ -83,6 +82,7 @@ abstract class ReaderAbstract implements ReaderInterface
public function setShouldFormatDates($shouldFormatDates)
{
$this->optionsManager->setOption(Options::SHOULD_FORMAT_DATES, $shouldFormatDates);
return $this;
}
@@ -96,6 +96,7 @@ abstract class ReaderAbstract implements ReaderInterface
public function setShouldPreserveEmptyRows($shouldPreserveEmptyRows)
{
$this->optionsManager->setOption(Options::SHOULD_PRESERVE_EMPTY_ROWS, $shouldPreserveEmptyRows);
return $this;
}
@@ -105,8 +106,8 @@ abstract class ReaderAbstract implements ReaderInterface
*
* @api
* @param string $filePath Path of the file to be read
* @return void
* @throws \Box\Spout\Common\Exception\IOException If the file at the given path does not exist, is not readable or is corrupted
* @return void
*/
public function open($filePath)
{
@@ -118,7 +119,8 @@ abstract class ReaderAbstract implements ReaderInterface
// we skip the checks if the provided file path points to a PHP stream
if (!$this->globalFunctionsHelper->file_exists($filePath)) {
throw new IOException("Could not open $filePath for reading! File does not exist.");
} else if (!$this->globalFunctionsHelper->is_readable($filePath)) {
}
if (!$this->globalFunctionsHelper->is_readable($filePath)) {
throw new IOException("Could not open $filePath for reading! File is not readable.");
}
}
@@ -162,6 +164,7 @@ abstract class ReaderAbstract implements ReaderInterface
if (preg_match('/^(\w+):\/\//', $filePath, $matches)) {
$streamScheme = $matches[1];
}
return $streamScheme;
}
@@ -188,6 +191,7 @@ abstract class ReaderAbstract implements ReaderInterface
protected function isSupportedStreamWrapper($filePath)
{
$streamScheme = $this->getStreamWrapperScheme($filePath);
return ($streamScheme !== null) ?
in_array($streamScheme, $this->globalFunctionsHelper->stream_get_wrappers()) :
true;
@@ -202,6 +206,7 @@ abstract class ReaderAbstract implements ReaderInterface
protected function isPhpStream($filePath)
{
$streamScheme = $this->getStreamWrapperScheme($filePath);
return ($streamScheme === 'php');
}
@@ -209,8 +214,8 @@ abstract class ReaderAbstract implements ReaderInterface
* Returns an iterator to iterate over sheets.
*
* @api
* @return \Iterator To iterate over sheets
* @throws \Box\Spout\Reader\Exception\ReaderNotOpenedException If called before opening the reader
* @return \Iterator To iterate over sheets
*/
public function getSheetIterator()
{
+1 -4
View File
@@ -11,8 +11,6 @@ use Box\Spout\Reader\XLSX\Manager\SharedStringsCaching\CachingStrategyFactory;
* Class ReaderFactory
* This factory is used to create readers, based on the type of the file to be read.
* It supports CSV and XLSX formats.
*
* @package Box\Spout\Reader
*/
class ReaderFactory
{
@@ -21,12 +19,11 @@ class ReaderFactory
*
* @api
* @param string $readerType Type of the reader to instantiate
* @return ReaderInterface
* @throws \Box\Spout\Common\Exception\UnsupportedTypeException
* @return ReaderInterface
*/
public static function create($readerType)
{
switch ($readerType) {
case Type::CSV: return self::getCSVReader();
case Type::XLSX: return self::getXLSXReader();
+2 -4
View File
@@ -4,8 +4,6 @@ namespace Box\Spout\Reader;
/**
* Interface ReaderInterface
*
* @package Box\Spout\Reader
*/
interface ReaderInterface
{
@@ -14,16 +12,16 @@ interface ReaderInterface
* that the file exists and is readable.
*
* @param string $filePath Path of the file to be read
* @return void
* @throws \Box\Spout\Common\Exception\IOException
* @return void
*/
public function open($filePath);
/**
* Returns an iterator to iterate over sheets.
*
* @return \Iterator To iterate over sheets
* @throws \Box\Spout\Reader\Exception\ReaderNotOpenedException If called before opening the reader
* @return \Iterator To iterate over sheets
*/
public function getSheetIterator();
-2
View File
@@ -4,8 +4,6 @@ namespace Box\Spout\Reader;
/**
* Interface SheetInterface
*
* @package Box\Spout\Reader
*/
interface SheetInterface
{
@@ -6,8 +6,6 @@ use Box\Spout\Reader\Exception\XMLProcessingException;
/**
* Trait XMLInternalErrorsHelper
*
* @package Box\Spout\Reader\Wrapper
*/
trait XMLInternalErrorsHelper
{
@@ -30,8 +28,8 @@ trait XMLInternalErrorsHelper
* Throws an XMLProcessingException if an error occured.
* It also always resets the "libxml_use_internal_errors" setting back to its initial value.
*
* @return void
* @throws \Box\Spout\Reader\Exception\XMLProcessingException
* @return void
*/
protected function resetXMLInternalErrorsSettingAndThrowIfXMLErrorOccured()
{
@@ -57,7 +55,7 @@ trait XMLInternalErrorsHelper
* Returns the error message for the last XML error that occured.
* @see libxml_get_last_error
*
* @return String|null Last XML error message or null if no error
* @return string|null Last XML error message or null if no error
*/
private function getLastXMLErrorMessage()
{
@@ -78,5 +76,4 @@ trait XMLInternalErrorsHelper
{
libxml_use_internal_errors($this->initialUseInternalErrorsValue);
}
}
+5 -8
View File
@@ -2,13 +2,10 @@
namespace Box\Spout\Reader\Wrapper;
/**
* Class XMLReader
* Wrapper around the built-in XMLReader
* @see \XMLReader
*
* @package Box\Spout\Reader\Wrapper
*/
class XMLReader extends \XMLReader
{
@@ -80,8 +77,8 @@ class XMLReader extends \XMLReader
* Move to next node in document
* @see \XMLReader::read
*
* @return bool TRUE on success or FALSE on failure
* @throws \Box\Spout\Reader\Exception\XMLProcessingException If an error/warning occurred
* @return bool TRUE on success or FALSE on failure
*/
public function read()
{
@@ -98,8 +95,8 @@ class XMLReader extends \XMLReader
* Read until the element with the given name is found, or the end of the file.
*
* @param string $nodeName Name of the node to find
* @return bool TRUE on success or FALSE on failure
* @throws \Box\Spout\Reader\Exception\XMLProcessingException If an error/warning occurred
* @return bool TRUE on success or FALSE on failure
*/
public function readUntilNodeFound($nodeName)
{
@@ -116,8 +113,8 @@ class XMLReader extends \XMLReader
* @see \XMLReader::next
*
* @param string|null $localName The name of the next node to move to
* @return bool TRUE on success or FALSE on failure
* @throws \Box\Spout\Reader\Exception\XMLProcessingException If an error/warning occurred
* @return bool TRUE on success or FALSE on failure
*/
public function next($localName = null)
{
@@ -136,7 +133,7 @@ class XMLReader extends \XMLReader
*/
public function isPositionedOnStartingNode($nodeName)
{
return $this->isPositionedOnNode($nodeName, XMLReader::ELEMENT);
return $this->isPositionedOnNode($nodeName, self::ELEMENT);
}
/**
@@ -145,7 +142,7 @@ class XMLReader extends \XMLReader
*/
public function isPositionedOnEndingNode($nodeName)
{
return $this->isPositionedOnNode($nodeName, XMLReader::END_ELEMENT);
return $this->isPositionedOnNode($nodeName, self::END_ELEMENT);
}
/**
@@ -5,18 +5,16 @@ namespace Box\Spout\Reader\XLSX\Creator;
use Box\Spout\Reader\Common\Creator\EntityFactoryInterface;
use Box\Spout\Reader\Common\Entity\Options;
use Box\Spout\Reader\Common\XMLProcessor;
use Box\Spout\Reader\Wrapper\XMLReader;
use Box\Spout\Reader\XLSX\Manager\SharedStringsManager;
use Box\Spout\Reader\XLSX\RowIterator;
use Box\Spout\Reader\XLSX\Sheet;
use Box\Spout\Reader\XLSX\SheetIterator;
use Box\Spout\Reader\Wrapper\XMLReader;
use MongoDB\Driver\Manager;
/**
* Class EntityFactory
* Factory to create entities
*
* @package Box\Spout\Reader\XLSX\Creator
*/
class EntityFactory implements EntityFactoryInterface
{
@@ -45,6 +43,7 @@ class EntityFactory implements EntityFactoryInterface
public function createSheetIterator($filePath, $optionsManager, $sharedStringsManager)
{
$sheetManager = $this->managerFactory->createSheetManager($filePath, $optionsManager, $sharedStringsManager, $this);
return new SheetIterator($sheetManager);
}
@@ -65,9 +64,10 @@ class EntityFactory implements EntityFactoryInterface
$sheetName,
$isSheetActive,
$optionsManager,
$sharedStringsManager)
{
$sharedStringsManager
) {
$rowIterator = $this->createRowIterator($filePath, $sheetDataXMLFilePath, $optionsManager, $sharedStringsManager);
return new Sheet($rowIterator, $sheetIndex, $sheetName, $isSheetActive);
}
@@ -4,17 +4,12 @@ namespace Box\Spout\Reader\XLSX\Creator;
use Box\Spout\Common\Helper\Escaper;
use Box\Spout\Reader\XLSX\Helper\CellValueFormatter;
use Box\Spout\Reader\XLSX\Manager\SharedStringsCaching\CachingStrategyFactory;
use Box\Spout\Reader\XLSX\Manager\SharedStringsManager;
use Box\Spout\Reader\XLSX\Manager\SheetManager;
use Box\Spout\Reader\XLSX\Manager\StyleManager;
/**
* Class HelperFactory
* Factory to create helpers
*
* @package Box\Spout\Reader\XLSX\Creator
*/
class HelperFactory extends \Box\Spout\Common\Creator\HelperFactory
{
@@ -27,6 +22,7 @@ class HelperFactory extends \Box\Spout\Common\Creator\HelperFactory
public function createCellValueFormatter($sharedStringsManager, $styleManager, $shouldFormatDates)
{
$escaper = $this->createStringsEscaper();
return new CellValueFormatter($sharedStringsManager, $styleManager, $shouldFormatDates, $escaper);
}
@@ -35,7 +31,7 @@ class HelperFactory extends \Box\Spout\Common\Creator\HelperFactory
*/
public function createStringsEscaper()
{
/** @noinspection PhpUnnecessaryFullyQualifiedNameInspection */
/* @noinspection PhpUnnecessaryFullyQualifiedNameInspection */
return new Escaper\XLSX();
}
}
@@ -7,12 +7,9 @@ use Box\Spout\Reader\XLSX\Manager\SharedStringsManager;
use Box\Spout\Reader\XLSX\Manager\SheetManager;
use Box\Spout\Reader\XLSX\Manager\StyleManager;
/**
* Class ManagerFactory
* Factory to create managers
*
* @package Box\Spout\Reader\XLSX\Creator
*/
class ManagerFactory
{
@@ -53,6 +50,7 @@ class ManagerFactory
public function createSheetManager($filePath, $optionsManager, $sharedStringsManager, $entityFactory)
{
$escaper = $this->helperFactory->createStringsEscaper();
return new SheetManager($filePath, $optionsManager, $sharedStringsManager, $escaper, $entityFactory);
}
+1 -3
View File
@@ -7,8 +7,6 @@ use Box\Spout\Common\Exception\InvalidArgumentException;
/**
* Class CellHelper
* This class provides helper functions when working with cells
*
* @package Box\Spout\Reader\XLSX\Helper
*/
class CellHelper
{
@@ -51,8 +49,8 @@ class CellHelper
* The mapping is zero based, so that A1 maps to 0, B2 maps to 1, Z13 to 25 and AA4 to 26.
*
* @param string $cellIndex The Excel cell index ('A1', 'BC13', ...)
* @return int
* @throws \Box\Spout\Common\Exception\InvalidArgumentException When the given cell index is invalid
* @return int
*/
public static function getColumnIndexFromCellIndex($cellIndex)
{
@@ -8,8 +8,6 @@ use Box\Spout\Reader\XLSX\Manager\StyleManager;
/**
* Class CellValueFormatter
* This class provides helper functions to format cell values
*
* @package Box\Spout\Reader\XLSX\Helper
*/
class CellValueFormatter
{
@@ -77,7 +75,7 @@ class CellValueFormatter
{
// Default cell type is "n"
$cellType = $node->getAttribute(self::XML_ATTRIBUTE_TYPE) ?: self::CELL_TYPE_NUMERIC;
$cellStyleId = intval($node->getAttribute(self::XML_ATTRIBUTE_STYLE_ID));
$cellStyleId = (int) $node->getAttribute(self::XML_ATTRIBUTE_STYLE_ID);
$vNodeValue = $this->getVNodeValue($node);
if (($vNodeValue === '') && ($cellType !== self::CELL_TYPE_INLINE_STRING)) {
@@ -113,6 +111,7 @@ class CellValueFormatter
// for cell types having a "v" tag containing the value.
// if not, the returned value should be empty string.
$vNode = $node->getElementsByTagName(self::XML_NODE_VALUE)->item(0);
return ($vNode !== null) ? $vNode->nodeValue : '';
}
@@ -128,6 +127,7 @@ class CellValueFormatter
// <c r="A1" t="inlineStr"><is><t>[INLINE_STRING]</t></is></c>
$tNode = $node->getElementsByTagName(self::XML_NODE_INLINE_STRING_VALUE)->item(0);
$cellValue = $this->escaper->unescape($tNode->nodeValue);
return $cellValue;
}
@@ -141,9 +141,10 @@ class CellValueFormatter
{
// shared strings are formatted this way:
// <c r="A1" t="s"><v>[SHARED_STRING_INDEX]</v></c>
$sharedStringIndex = intval($nodeValue);
$sharedStringIndex = (int) $nodeValue;
$escapedCellValue = $this->sharedStringsManager->getStringAtIndex($sharedStringIndex);
$cellValue = $this->escaper->unescape($escapedCellValue);
return $cellValue;
}
@@ -157,6 +158,7 @@ class CellValueFormatter
{
$escapedCellValue = trim($nodeValue);
$cellValue = $this->escaper->unescape($escapedCellValue);
return $cellValue;
}
@@ -175,9 +177,9 @@ class CellValueFormatter
$shouldFormatAsDate = $this->styleManager->shouldFormatNumericValueAsDate($cellStyleId);
if ($shouldFormatAsDate) {
$cellValue = $this->formatExcelTimestampValue(floatval($nodeValue), $cellStyleId);
$cellValue = $this->formatExcelTimestampValue((float) $nodeValue, $cellStyleId);
} else {
$nodeIntValue = intval($nodeValue);
$nodeIntValue = (int) $nodeValue;
$nodeFloatValue = (float) $nodeValue;
$cellValue = ((float) $nodeIntValue === $nodeFloatValue) ? $nodeIntValue : $nodeFloatValue;
}
@@ -204,7 +206,7 @@ class CellValueFormatter
if ($nodeValue >= 1) {
// Values greater than 1 represent "dates". The value 1.0 representing the "base" date: 1900-01-01.
$cellValue = $this->formatExcelTimestampValueAsDateValue($nodeValue, $cellStyleId);
} else if ($nodeValue >= 0) {
} elseif ($nodeValue >= 0) {
// Values between 0 and 1 represent "times".
$cellValue = $this->formatExcelTimestampValueAsTimeValue($nodeValue, $cellStyleId);
} else {
@@ -262,7 +264,7 @@ class CellValueFormatter
try {
$dateObj = \DateTime::createFromFormat('|Y-m-d', '1899-12-31');
$dateObj->modify('+' . intval($nodeValue) . 'days');
$dateObj->modify('+' . (int) $nodeValue . 'days');
$dateObj->modify('+' . $secondsRemainder . 'seconds');
if ($this->shouldFormatDates) {
@@ -5,8 +5,6 @@ namespace Box\Spout\Reader\XLSX\Helper;
/**
* Class DateFormatHelper
* This class provides helper functions to format Excel dates
*
* @package Box\Spout\Reader\XLSX\Helper
*/
class DateFormatHelper
{
@@ -104,9 +102,10 @@ class DateFormatHelper
// Finally, to have the date format compatible with the DateTime::format() function, we need to escape
// all characters that are inside double quotes (and double quotes must be removed).
// For instance, ["Day " dd] should become [\D\a\y\ dd]
$phpDateFormat = preg_replace_callback('/"(.+?)"/', function($matches) {
$phpDateFormat = preg_replace_callback('/"(.+?)"/', function ($matches) {
$stringToEscape = $matches[1];
$letters = preg_split('//u', $stringToEscape, -1, PREG_SPLIT_NO_EMPTY);
return '\\' . implode('\\', $letters);
}, $phpDateFormat);
@@ -8,13 +8,11 @@ use Box\Spout\Reader\Common\Entity\Options;
/**
* Class OptionsManager
* XLSX Reader options manager
*
* @package Box\Spout\Reader\XLSX\Manager
*/
class OptionsManager extends OptionsManagerAbstract
{
/**
* @inheritdoc
* {@inheritdoc}
*/
protected function getSupportedOptions()
{
@@ -26,7 +24,7 @@ class OptionsManager extends OptionsManagerAbstract
}
/**
* @inheritdoc
* {@inheritdoc}
*/
protected function setDefaultOptions()
{
@@ -6,8 +6,6 @@ use Box\Spout\Reader\XLSX\Creator\HelperFactory;
/**
* Class CachingStrategyFactory
*
* @package Box\Spout\Reader\XLSX\Manager\SharedStringsCaching
*/
class CachingStrategyFactory
{
@@ -52,7 +50,6 @@ class CachingStrategyFactory
*/
const MAX_NUM_STRINGS_PER_TEMP_FILE = 10000;
/**
* Returns the best caching strategy, given the number of unique shared strings
* and the amount of memory available.
@@ -114,7 +111,7 @@ class CachingStrategyFactory
}
if (preg_match('/(\d+)([bkmgt])b?/', $memoryLimitFormatted, $matches)) {
$amount = intval($matches[1]);
$amount = (int) ($matches[1]);
$unit = $matches[2];
switch ($unit) {
@@ -4,8 +4,6 @@ namespace Box\Spout\Reader\XLSX\Manager\SharedStringsCaching;
/**
* Interface CachingStrategyInterface
*
* @package Box\Spout\Reader\XLSX\Manager\SharedStringsCaching
*/
interface CachingStrategyInterface
{
@@ -30,8 +28,8 @@ interface CachingStrategyInterface
* Returns the string located at the given index from the cache.
*
* @param int $sharedStringIndex Index of the shared string in the sharedStrings.xml file
* @return string The shared string at the given index
* @throws \Box\Spout\Reader\Exception\SharedStringNotFoundException If no shared string found for the given index
* @return string The shared string at the given index
*/
public function getStringAtIndex($sharedStringIndex);
@@ -11,8 +11,6 @@ use Box\Spout\Reader\XLSX\Creator\HelperFactory;
* This class implements the file-based caching strategy for shared strings.
* Shared strings are stored in small files (with a max number of strings per file).
* This strategy is slower than an in-memory strategy but is used to avoid out of memory crashes.
*
* @package Box\Spout\Reader\XLSX\Manager\SharedStringsCaching
*/
class FileBasedStrategy implements CachingStrategyInterface
{
@@ -98,7 +96,8 @@ class FileBasedStrategy implements CachingStrategyInterface
*/
protected function getSharedStringTempFilePath($sharedStringIndex)
{
$numTempFile = intval($sharedStringIndex / $this->maxNumStringsPerTempFile);
$numTempFile = (int) ($sharedStringIndex / $this->maxNumStringsPerTempFile);
return $this->tempFolder . '/sharedstrings' . $numTempFile;
}
@@ -116,13 +115,12 @@ class FileBasedStrategy implements CachingStrategyInterface
}
}
/**
* Returns the string located at the given index from the cache.
*
* @param int $sharedStringIndex Index of the shared string in the sharedStrings.xml file
* @return string The shared string at the given index
* @throws \Box\Spout\Reader\Exception\SharedStringNotFoundException If no shared string found for the given index
* @return string The shared string at the given index
*/
public function getStringAtIndex($sharedStringIndex)
{
@@ -9,8 +9,6 @@ use Box\Spout\Reader\Exception\SharedStringNotFoundException;
*
* This class implements the in-memory caching strategy for shared strings.
* This strategy is used when the number of unique strings is low, compared to the memory available.
*
* @package Box\Spout\Reader\XLSX\Manager\SharedStringsCaching
*/
class InMemoryStrategy implements CachingStrategyInterface
{
@@ -58,8 +56,8 @@ class InMemoryStrategy implements CachingStrategyInterface
* Returns the string located at the given index from the cache.
*
* @param int $sharedStringIndex Index of the shared string in the sharedStrings.xml file
* @return string The shared string at the given index
* @throws \Box\Spout\Reader\Exception\SharedStringNotFoundException If no shared string found for the given index
* @return string The shared string at the given index
*/
public function getStringAtIndex($sharedStringIndex)
{
@@ -13,8 +13,6 @@ use Box\Spout\Reader\XLSX\Manager\SharedStringsCaching\CachingStrategyInterface;
/**
* Class SharedStringsManager
* This class manages the shared strings defined in the associated XML file
*
* @package Box\Spout\Reader\XLSX\Manager
*/
class SharedStringsManager
{
@@ -98,8 +96,8 @@ class SharedStringsManager
* The XML file can be really big with sheets containing a lot of data. That is why
* we need to use a XML reader that provides streaming like the XMLReader library.
*
* @return void
* @throws \Box\Spout\Common\Exception\IOException If sharedStrings.xml can't be read
* @return void
*/
public function extractSharedStrings()
{
@@ -125,7 +123,6 @@ class SharedStringsManager
}
$this->cachingStrategy->closeCache();
} catch (XMLProcessingException $exception) {
throw new IOException("The sharedStrings.xml file is invalid and cannot be read. [{$exception->getMessage()}]");
}
@@ -137,8 +134,8 @@ class SharedStringsManager
* Returns the shared strings unique count, as specified in <sst> tag.
*
* @param \Box\Spout\Reader\Wrapper\XMLReader $xmlReader XMLReader instance
* @return int|null Number of unique shared strings in the sharedStrings.xml file
* @throws \Box\Spout\Common\Exception\IOException If sharedStrings.xml is invalid and can't be read
* @return int|null Number of unique shared strings in the sharedStrings.xml file
*/
protected function getSharedStringsUniqueCount($xmlReader)
{
@@ -157,7 +154,7 @@ class SharedStringsManager
$uniqueCount = $xmlReader->getAttribute(self::XML_ATTRIBUTE_COUNT);
}
return ($uniqueCount !== null) ? intval($uniqueCount) : null;
return ($uniqueCount !== null) ? (int) $uniqueCount : null;
}
/**
@@ -210,6 +207,7 @@ class SharedStringsManager
protected function shouldExtractTextNodeValue($textNode)
{
$parentTagName = $textNode->parentNode->localName;
return ($parentTagName === self::XML_NODE_SI || $parentTagName === self::XML_NODE_R);
}
@@ -222,6 +220,7 @@ class SharedStringsManager
protected function shouldPreserveWhitespace($textNode)
{
$spaceValue = $textNode->getAttribute(self::XML_ATTRIBUTE_XML_SPACE);
return ($spaceValue === self::XML_ATTRIBUTE_VALUE_PRESERVE);
}
@@ -229,8 +228,8 @@ class SharedStringsManager
* Returns the shared string at the given index, using the previously chosen caching strategy.
*
* @param int $sharedStringIndex Index of the shared string in the sharedStrings.xml file
* @return string The shared string at the given index
* @throws \Box\Spout\Reader\Exception\SharedStringNotFoundException If no shared string found for the given index
* @return string The shared string at the given index
*/
public function getStringAtIndex($sharedStringIndex)
{
@@ -2,15 +2,12 @@
namespace Box\Spout\Reader\XLSX\Manager;
use Box\Spout\Reader\Wrapper\XMLReader;
use Box\Spout\Reader\XLSX\Creator\EntityFactory;
use Box\Spout\Reader\XLSX\Sheet;
/**
* Class SheetManager
* This class manages XLSX sheets
*
* @package Box\Spout\Reader\XLSX\Manager
*/
class SheetManager
{
@@ -55,6 +52,7 @@ class SheetManager
* @param \Box\Spout\Reader\XLSX\Manager\SharedStringsManager $sharedStringsManager Manages shared strings
* @param \Box\Spout\Common\Helper\Escaper\XLSX $escaper Used to unescape XML data
* @param EntityFactory $entityFactory Factory to create entities
* @param mixed $sharedStringsManager
*/
public function __construct($filePath, $optionsManager, $sharedStringsManager, $escaper, $entityFactory)
{
@@ -85,11 +83,11 @@ class SheetManager
// The "workbookView" node is located before "sheet" nodes, ensuring that
// the active sheet is known before parsing sheets data.
$activeSheetIndex = (int) $xmlReader->getAttribute(self::XML_ATTRIBUTE_ACTIVE_TAB);
} else if ($xmlReader->isPositionedOnStartingNode(self::XML_NODE_SHEET)) {
} elseif ($xmlReader->isPositionedOnStartingNode(self::XML_NODE_SHEET)) {
$isSheetActive = ($sheetIndex === $activeSheetIndex);
$sheets[] = $this->getSheetFromSheetXMLNode($xmlReader, $sheetIndex, $isSheetActive);
$sheetIndex++;
} else if ($xmlReader->isPositionedOnEndingNode(self::XML_NODE_SHEETS)) {
} elseif ($xmlReader->isPositionedOnEndingNode(self::XML_NODE_SHEETS)) {
// stop reading once all sheets have been read
break;
}
+7 -10
View File
@@ -7,8 +7,6 @@ use Box\Spout\Reader\XLSX\Creator\EntityFactory;
/**
* Class StyleManager
* This class manages XLSX styles
*
* @package Box\Spout\Reader\XLSX\Manager
*/
class StyleManager
{
@@ -118,8 +116,7 @@ class StyleManager
while ($xmlReader->read()) {
if ($xmlReader->isPositionedOnStartingNode(self::XML_NODE_NUM_FMTS)) {
$this->extractNumberFormats($xmlReader);
} else if ($xmlReader->isPositionedOnStartingNode(self::XML_NODE_CELL_XFS)) {
} elseif ($xmlReader->isPositionedOnStartingNode(self::XML_NODE_CELL_XFS)) {
$this->extractStyleAttributes($xmlReader);
}
}
@@ -140,10 +137,10 @@ class StyleManager
{
while ($xmlReader->read()) {
if ($xmlReader->isPositionedOnStartingNode(self::XML_NODE_NUM_FMT)) {
$numFmtId = intval($xmlReader->getAttribute(self::XML_ATTRIBUTE_NUM_FMT_ID));
$numFmtId = (int) ($xmlReader->getAttribute(self::XML_ATTRIBUTE_NUM_FMT_ID));
$formatCode = $xmlReader->getAttribute(self::XML_ATTRIBUTE_FORMAT_CODE);
$this->customNumberFormats[$numFmtId] = $formatCode;
} else if ($xmlReader->isPositionedOnEndingNode(self::XML_NODE_NUM_FMTS)) {
} elseif ($xmlReader->isPositionedOnEndingNode(self::XML_NODE_NUM_FMTS)) {
// Once done reading "numFmts" node's children
break;
}
@@ -163,16 +160,16 @@ class StyleManager
while ($xmlReader->read()) {
if ($xmlReader->isPositionedOnStartingNode(self::XML_NODE_XF)) {
$numFmtId = $xmlReader->getAttribute(self::XML_ATTRIBUTE_NUM_FMT_ID);
$normalizedNumFmtId = ($numFmtId !== null) ? intval($numFmtId) : null;
$normalizedNumFmtId = ($numFmtId !== null) ? (int) $numFmtId : null;
$applyNumberFormat = $xmlReader->getAttribute(self::XML_ATTRIBUTE_APPLY_NUMBER_FORMAT);
$normalizedApplyNumberFormat = ($applyNumberFormat !== null) ? !!$applyNumberFormat : null;
$normalizedApplyNumberFormat = ($applyNumberFormat !== null) ? (bool) $applyNumberFormat : null;
$this->stylesAttributes[] = [
self::XML_ATTRIBUTE_NUM_FMT_ID => $normalizedNumFmtId,
self::XML_ATTRIBUTE_NUM_FMT_ID => $normalizedNumFmtId,
self::XML_ATTRIBUTE_APPLY_NUMBER_FORMAT => $normalizedApplyNumberFormat,
];
} else if ($xmlReader->isPositionedOnEndingNode(self::XML_NODE_CELL_XFS)) {
} elseif ($xmlReader->isPositionedOnEndingNode(self::XML_NODE_CELL_XFS)) {
// Once done reading "cellXfs" node's children
break;
}
+4 -6
View File
@@ -14,8 +14,6 @@ use Box\Spout\Reader\XLSX\Creator\ManagerFactory;
/**
* Class Reader
* This class provides support to read data from a XLSX file
*
* @package Box\Spout\Reader\XLSX
*/
class Reader extends ReaderAbstract
{
@@ -31,7 +29,6 @@ class Reader extends ReaderAbstract
/** @var SheetIterator To iterator over the XLSX sheets */
protected $sheetIterator;
/**
* @param OptionsManagerInterface $optionsManager
* @param GlobalFunctionsHelper $globalFunctionsHelper
@@ -42,8 +39,8 @@ class Reader extends ReaderAbstract
OptionsManagerInterface $optionsManager,
GlobalFunctionsHelper $globalFunctionsHelper,
EntityFactoryInterface $entityFactory,
ManagerFactory $managerFactory)
{
ManagerFactory $managerFactory
) {
parent::__construct($optionsManager, $globalFunctionsHelper, $entityFactory);
$this->managerFactory = $managerFactory;
}
@@ -55,6 +52,7 @@ class Reader extends ReaderAbstract
public function setTempFolder($tempFolder)
{
$this->optionsManager->setOption(Options::TEMP_FOLDER, $tempFolder);
return $this;
}
@@ -74,9 +72,9 @@ class Reader extends ReaderAbstract
* and fetches all the available sheets.
*
* @param string $filePath Path of the file to be read
* @return void
* @throws \Box\Spout\Common\Exception\IOException If the file at the given path or its content cannot be read
* @throws \Box\Spout\Reader\Exception\NoSheetsFoundException If there are no sheets in the file
* @return void
*/
protected function openReader($filePath)
{
+14 -20
View File
@@ -3,20 +3,15 @@
namespace Box\Spout\Reader\XLSX;
use Box\Spout\Common\Exception\IOException;
use Box\Spout\Reader\Common\Entity\Options;
use Box\Spout\Reader\Common\XMLProcessor;
use Box\Spout\Reader\Exception\XMLProcessingException;
use Box\Spout\Reader\IteratorInterface;
use Box\Spout\Reader\Wrapper\XMLReader;
use Box\Spout\Reader\XLSX\Creator\EntityFactory;
use Box\Spout\Reader\XLSX\Creator\HelperFactory;
use Box\Spout\Reader\XLSX\Helper\CellHelper;
use Box\Spout\Reader\Common\XMLProcessor;
use Box\Spout\Reader\XLSX\Helper\CellValueFormatter;
/**
* Class RowIterator
*
* @package Box\Spout\Reader\XLSX
*/
class RowIterator implements IteratorInterface
{
@@ -57,7 +52,7 @@ class RowIterator implements IteratorInterface
protected $currentlyProcessedRowData = [];
/** @var array|null Buffer used to store the row data, while checking if there are more rows to read */
protected $rowDataBuffer = null;
protected $rowDataBuffer;
/** @var bool Indicates whether all rows have been read */
protected $hasReachedEndOfFile = false;
@@ -116,10 +111,10 @@ class RowIterator implements IteratorInterface
* Rewind the Iterator to the first element.
* Initializes the XMLReader object that reads the associated sheet data.
* The XMLReader is configured to be safe from billion laughs attack.
* @link http://php.net/manual/en/iterator.rewind.php
* @see http://php.net/manual/en/iterator.rewind.php
*
* @return void
* @throws \Box\Spout\Common\Exception\IOException If the sheet data XML cannot be read
* @return void
*/
public function rewind()
{
@@ -141,7 +136,7 @@ class RowIterator implements IteratorInterface
/**
* Checks if current position is valid
* @link http://php.net/manual/en/iterator.valid.php
* @see http://php.net/manual/en/iterator.valid.php
*
* @return bool
*/
@@ -152,11 +147,11 @@ class RowIterator implements IteratorInterface
/**
* Move forward to next element. Reads data describing the next unprocessed row.
* @link http://php.net/manual/en/iterator.next.php
* @see http://php.net/manual/en/iterator.next.php
*
* @return void
* @throws \Box\Spout\Reader\Exception\SharedStringNotFoundException If a shared string was not found
* @throws \Box\Spout\Common\Exception\IOException If unable to read the sheet data XML
* @return void
*/
public function next()
{
@@ -191,9 +186,9 @@ class RowIterator implements IteratorInterface
}
/**
* @return void
* @throws \Box\Spout\Reader\Exception\SharedStringNotFoundException If a shared string was not found
* @throws \Box\Spout\Common\Exception\IOException If unable to read the sheet data XML
* @return void
*/
protected function readDataForNextRow()
{
@@ -240,7 +235,7 @@ class RowIterator implements IteratorInterface
$spans = $xmlReader->getAttribute(self::XML_ATTRIBUTE_SPANS); // returns '1:5' for instance
if ($spans) {
list(, $numberOfColumnsForRow) = explode(':', $spans);
$numberOfColumnsForRow = intval($numberOfColumnsForRow);
$numberOfColumnsForRow = (int) $numberOfColumnsForRow;
}
$this->currentlyProcessedRowData = ($numberOfColumnsForRow !== 0) ? array_fill(0, $numberOfColumnsForRow, '') : [];
@@ -300,8 +295,8 @@ class RowIterator implements IteratorInterface
/**
* @param \Box\Spout\Reader\Wrapper\XMLReader $xmlReader XMLReader object, positioned on a "<row>" node
* @return int Row index
* @throws \Box\Spout\Common\Exception\InvalidArgumentException When the given cell index is invalid
* @return int Row index
*/
protected function getRowIndex($xmlReader)
{
@@ -309,14 +304,14 @@ class RowIterator implements IteratorInterface
$currentRowIndex = $xmlReader->getAttribute(self::XML_ATTRIBUTE_ROW_INDEX);
return ($currentRowIndex !== null) ?
intval($currentRowIndex) :
(int) $currentRowIndex :
$this->lastRowIndexProcessed + 1;
}
/**
* @param \Box\Spout\Reader\Wrapper\XMLReader $xmlReader XMLReader object, positioned on a "<c>" node
* @return int Column index
* @throws \Box\Spout\Common\Exception\InvalidArgumentException When the given cell index is invalid
* @return int Column index
*/
protected function getColumnIndex($xmlReader)
{
@@ -350,7 +345,7 @@ class RowIterator implements IteratorInterface
/**
* Return the current element, either an empty row or from the buffer.
* @link http://php.net/manual/en/iterator.current.php
* @see http://php.net/manual/en/iterator.current.php
*
* @return array|null
*/
@@ -375,7 +370,7 @@ class RowIterator implements IteratorInterface
/**
* Return the key of the current element. Here, the row index.
* @link http://php.net/manual/en/iterator.key.php
* @see http://php.net/manual/en/iterator.key.php
*
* @return int
*/
@@ -389,7 +384,6 @@ class RowIterator implements IteratorInterface
$this->numReadRows;
}
/**
* Cleans up what was created to iterate over the object.
*
-3
View File
@@ -3,13 +3,10 @@
namespace Box\Spout\Reader\XLSX;
use Box\Spout\Reader\SheetInterface;
use Box\Spout\Reader\XLSX\Creator\EntityFactory;
/**
* Class Sheet
* Represents a sheet within a XLSX file
*
* @package Box\Spout\Reader\XLSX
*/
class Sheet implements SheetInterface
{
+6 -8
View File
@@ -2,15 +2,13 @@
namespace Box\Spout\Reader\XLSX;
use Box\Spout\Reader\Exception\NoSheetsFoundException;
use Box\Spout\Reader\IteratorInterface;
use Box\Spout\Reader\XLSX\Manager\SheetManager;
use Box\Spout\Reader\Exception\NoSheetsFoundException;
/**
* Class SheetIterator
* Iterate over XLSX sheet.
*
* @package Box\Spout\Reader\XLSX
*/
class SheetIterator implements IteratorInterface
{
@@ -36,7 +34,7 @@ class SheetIterator implements IteratorInterface
/**
* Rewind the Iterator to the first element
* @link http://php.net/manual/en/iterator.rewind.php
* @see http://php.net/manual/en/iterator.rewind.php
*
* @return void
*/
@@ -47,7 +45,7 @@ class SheetIterator implements IteratorInterface
/**
* Checks if current position is valid
* @link http://php.net/manual/en/iterator.valid.php
* @see http://php.net/manual/en/iterator.valid.php
*
* @return bool
*/
@@ -58,7 +56,7 @@ class SheetIterator implements IteratorInterface
/**
* Move forward to next element
* @link http://php.net/manual/en/iterator.next.php
* @see http://php.net/manual/en/iterator.next.php
*
* @return void
*/
@@ -75,7 +73,7 @@ class SheetIterator implements IteratorInterface
/**
* Return the current element
* @link http://php.net/manual/en/iterator.current.php
* @see http://php.net/manual/en/iterator.current.php
*
* @return \Box\Spout\Reader\XLSX\Sheet
*/
@@ -86,7 +84,7 @@ class SheetIterator implements IteratorInterface
/**
* Return the key of the current element
* @link http://php.net/manual/en/iterator.key.php
* @see http://php.net/manual/en/iterator.key.php
*
* @return int
*/