From 64a09a748d04992d63b38712599a9d8742bd77f7 Mon Sep 17 00:00:00 2001 From: Adrien Loison Date: Thu, 13 Jan 2022 23:01:00 +0100 Subject: [PATCH] More deprecations fixes --- src/Spout/Reader/CSV/Reader.php | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/src/Spout/Reader/CSV/Reader.php b/src/Spout/Reader/CSV/Reader.php index ca61ef2..942acc5 100644 --- a/src/Spout/Reader/CSV/Reader.php +++ b/src/Spout/Reader/CSV/Reader.php @@ -3,6 +3,9 @@ namespace Box\Spout\Reader\CSV; use Box\Spout\Common\Exception\IOException; +use Box\Spout\Common\Helper\GlobalFunctionsHelper; +use Box\Spout\Common\Manager\OptionsManagerInterface; +use Box\Spout\Reader\Common\Creator\InternalEntityFactoryInterface; use Box\Spout\Reader\Common\Entity\Options; use Box\Spout\Reader\CSV\Creator\InternalEntityFactory; use Box\Spout\Reader\ReaderAbstract; @@ -22,6 +25,23 @@ class Reader extends ReaderAbstract /** @var string Original value for the "auto_detect_line_endings" INI value */ protected $originalAutoDetectLineEndings; + /** @var bool Whether the code is running with PHP >= 8.1 */ + private $isRunningAtLeastPhp81; + + /** + * @param OptionsManagerInterface $optionsManager + * @param GlobalFunctionsHelper $globalFunctionsHelper + * @param InternalEntityFactoryInterface $entityFactory + */ + public function __construct( + OptionsManagerInterface $optionsManager, + GlobalFunctionsHelper $globalFunctionsHelper, + InternalEntityFactoryInterface $entityFactory + ) { + parent::__construct($optionsManager, $globalFunctionsHelper, $entityFactory); + $this->isRunningAtLeastPhp81 = \version_compare(PHP_VERSION, '8.1.0') >= 0; + } + /** * Sets the field delimiter for the CSV. * Needs to be called before opening the reader. @@ -84,8 +104,11 @@ class Reader extends ReaderAbstract */ protected function openReader($filePath) { - $this->originalAutoDetectLineEndings = \ini_get('auto_detect_line_endings'); - \ini_set('auto_detect_line_endings', '1'); + // "auto_detect_line_endings" is deprecated in PHP 8.1 + if (!$this->isRunningAtLeastPhp81) { + $this->originalAutoDetectLineEndings = \ini_get('auto_detect_line_endings'); + \ini_set('auto_detect_line_endings', '1'); + } $this->filePointer = $this->globalFunctionsHelper->fopen($filePath, 'r'); if (!$this->filePointer) { @@ -123,6 +146,9 @@ class Reader extends ReaderAbstract $this->globalFunctionsHelper->fclose($this->filePointer); } - \ini_set('auto_detect_line_endings', $this->originalAutoDetectLineEndings); + // "auto_detect_line_endings" is deprecated in PHP 8.1 + if (!$this->isRunningAtLeastPhp81) { + \ini_set('auto_detect_line_endings', $this->originalAutoDetectLineEndings); + } } }