AutorÃa | Ultima modificación | Ver Log |
<?phpnamespace PhpOffice\PhpSpreadsheet\Shared;use PhpOffice\PhpSpreadsheet\Exception as SpreadsheetException;class XMLWriter extends \XMLWriter{/** @var bool */public static $debugEnabled = false;/** Temporary storage method */const STORAGE_MEMORY = 1;const STORAGE_DISK = 2;/*** Temporary filename.** @var string*/private $tempFileName = '';/*** Create a new XMLWriter instance.** @param int $temporaryStorage Temporary storage location* @param string $temporaryStorageFolder Temporary storage folder*/public function __construct($temporaryStorage = self::STORAGE_MEMORY, $temporaryStorageFolder = null){// Open temporary storageif ($temporaryStorage == self::STORAGE_MEMORY) {$this->openMemory();} else {// Create temporary filenameif ($temporaryStorageFolder === null) {$temporaryStorageFolder = File::sysGetTempDir();}$this->tempFileName = (string) @tempnam($temporaryStorageFolder, 'xml');// Open storageif (empty($this->tempFileName) || $this->openUri($this->tempFileName) === false) {// Fallback to memory...$this->openMemory();}}// Set default valuesif (self::$debugEnabled) {$this->setIndent(true);}}/*** Destructor.*/public function __destruct(){// Unlink temporary files// There is nothing reasonable to do if unlink fails.if ($this->tempFileName != '') {/** @scrutinizer ignore-unhandled */@unlink($this->tempFileName);}}public function __wakeup(): void{$this->tempFileName = '';throw new SpreadsheetException('Unserialize not permitted');}/*** Get written data.** @return string*/public function getData(){if ($this->tempFileName == '') {return $this->outputMemory(true);}$this->flush();return file_get_contents($this->tempFileName) ?: '';}/*** Wrapper method for writeRaw.** @param null|string|string[] $rawTextData** @return bool*/public function writeRawData($rawTextData){if (is_array($rawTextData)) {$rawTextData = implode("\n", $rawTextData);}return $this->writeRaw(htmlspecialchars($rawTextData ?? ''));}}