Wrap actual file loading in protected methods, while just providing a stub `load()` method in the BaseReader abstract. This is to allow a wrapper in the file loader logic across all Readers, with a try/catch block that can be used to handle special loader settings. (#2620)
This commit is contained in:
parent
16953e27d8
commit
579145eb3c
|
|
@ -2,9 +2,11 @@
|
|||
|
||||
namespace PhpOffice\PhpSpreadsheet\Reader;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException;
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Exception as ReaderException;
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Security\XmlScanner;
|
||||
use PhpOffice\PhpSpreadsheet\Shared\File;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
|
||||
abstract class BaseReader implements IReader
|
||||
{
|
||||
|
|
@ -144,25 +146,41 @@ abstract class BaseReader implements IReader
|
|||
}
|
||||
}
|
||||
|
||||
protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
|
||||
{
|
||||
throw new PhpSpreadsheetException('Reader classes must implement their own loadSpreadsheetFromFile() method');
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads Spreadsheet from file.
|
||||
*/
|
||||
public function load(string $filename, int $flags = 0): Spreadsheet
|
||||
{
|
||||
$this->processFlags($flags);
|
||||
|
||||
try {
|
||||
return $this->loadSpreadsheetFromFile($filename);
|
||||
} catch (ReaderException $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Open file for reading.
|
||||
*
|
||||
* @param string $filename
|
||||
*/
|
||||
protected function openFile($filename): void
|
||||
protected function openFile(string $filename): void
|
||||
{
|
||||
$fileHandle = false;
|
||||
if ($filename) {
|
||||
File::assertFile($filename);
|
||||
|
||||
// Open file
|
||||
$fileHandle = fopen($filename, 'rb');
|
||||
} else {
|
||||
$fileHandle = false;
|
||||
}
|
||||
if ($fileHandle !== false) {
|
||||
$this->fileHandle = $fileHandle;
|
||||
} else {
|
||||
if ($fileHandle === false) {
|
||||
throw new ReaderException('Could not open file ' . $filename . ' for reading.');
|
||||
}
|
||||
|
||||
$this->fileHandle = $fileHandle;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -236,13 +236,9 @@ class Csv extends BaseReader
|
|||
|
||||
/**
|
||||
* Loads Spreadsheet from file.
|
||||
*
|
||||
* @return Spreadsheet
|
||||
*/
|
||||
public function load(string $filename, int $flags = 0)
|
||||
protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
|
||||
{
|
||||
$this->processFlags($flags);
|
||||
|
||||
// Create new Spreadsheet
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
|
|
|
|||
|
|
@ -227,13 +227,9 @@ class Gnumeric extends BaseReader
|
|||
|
||||
/**
|
||||
* Loads Spreadsheet from file.
|
||||
*
|
||||
* @return Spreadsheet
|
||||
*/
|
||||
public function load(string $filename, int $flags = 0)
|
||||
protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
|
||||
{
|
||||
$this->processFlags($flags);
|
||||
|
||||
// Create new Spreadsheet
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$spreadsheet->removeSheetByIndex(0);
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
|
|||
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
|
||||
use Throwable;
|
||||
|
||||
/** PhpSpreadsheet root directory */
|
||||
class Html extends BaseReader
|
||||
{
|
||||
/**
|
||||
|
|
@ -201,13 +200,9 @@ class Html extends BaseReader
|
|||
|
||||
/**
|
||||
* Loads Spreadsheet from file.
|
||||
*
|
||||
* @return Spreadsheet
|
||||
*/
|
||||
public function load(string $filename, int $flags = 0)
|
||||
protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
|
||||
{
|
||||
$this->processFlags($flags);
|
||||
|
||||
// Create new Spreadsheet
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
|
|
|
|||
|
|
@ -217,13 +217,9 @@ class Ods extends BaseReader
|
|||
|
||||
/**
|
||||
* Loads PhpSpreadsheet from file.
|
||||
*
|
||||
* @return Spreadsheet
|
||||
*/
|
||||
public function load(string $filename, int $flags = 0)
|
||||
protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
|
||||
{
|
||||
$this->processFlags($flags);
|
||||
|
||||
// Create new Spreadsheet
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
|
|
|
|||
|
|
@ -191,13 +191,9 @@ class Slk extends BaseReader
|
|||
|
||||
/**
|
||||
* Loads PhpSpreadsheet from file.
|
||||
*
|
||||
* @return Spreadsheet
|
||||
*/
|
||||
public function load(string $filename, int $flags = 0)
|
||||
protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
|
||||
{
|
||||
$this->processFlags($flags);
|
||||
|
||||
// Create new Spreadsheet
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
|
|
|
|||
|
|
@ -620,13 +620,9 @@ class Xls extends BaseReader
|
|||
|
||||
/**
|
||||
* Loads PhpSpreadsheet from file.
|
||||
*
|
||||
* @return Spreadsheet
|
||||
*/
|
||||
public function load(string $filename, int $flags = 0)
|
||||
protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
|
||||
{
|
||||
$this->processFlags($flags);
|
||||
|
||||
// Read the OLE file
|
||||
$this->loadOLE($filename);
|
||||
|
||||
|
|
|
|||
|
|
@ -384,10 +384,9 @@ class Xlsx extends BaseReader
|
|||
/**
|
||||
* Loads Spreadsheet from file.
|
||||
*/
|
||||
public function load(string $filename, int $flags = 0): Spreadsheet
|
||||
protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
|
||||
{
|
||||
File::assertFile($filename, self::INITIAL_FILE);
|
||||
$this->processFlags($flags);
|
||||
|
||||
// Initialisations
|
||||
$excel = new Spreadsheet();
|
||||
|
|
|
|||
|
|
@ -231,13 +231,9 @@ class Xml extends BaseReader
|
|||
|
||||
/**
|
||||
* Loads Spreadsheet from file.
|
||||
*
|
||||
* @return Spreadsheet
|
||||
*/
|
||||
public function load(string $filename, int $flags = 0)
|
||||
protected function loadSpreadsheetFromFile(string $filename): Spreadsheet
|
||||
{
|
||||
$this->processFlags($flags);
|
||||
|
||||
// Create new Spreadsheet
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$spreadsheet->removeSheetByIndex(0);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ use PhpOffice\PhpSpreadsheet\Calculation\Functions;
|
|||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class CalclationFunctionListTest extends TestCase
|
||||
class CalculationFunctionListTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
Loading…
Reference in New Issue