123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- <?php
- namespace PhpOffice\PhpSpreadsheet\Calculation\Engine;
- class Logger
- {
- /**
- * Flag to determine whether a debug log should be generated by the calculation engine
- * If true, then a debug log will be generated
- * If false, then a debug log will not be generated.
- *
- * @var bool
- */
- private $writeDebugLog = false;
- /**
- * Flag to determine whether a debug log should be echoed by the calculation engine
- * If true, then a debug log will be echoed
- * If false, then a debug log will not be echoed
- * A debug log can only be echoed if it is generated.
- *
- * @var bool
- */
- private $echoDebugLog = false;
- /**
- * The debug log generated by the calculation engine.
- *
- * @var string[]
- */
- private $debugLog = [];
- /**
- * The calculation engine cell reference stack.
- *
- * @var CyclicReferenceStack
- */
- private $cellStack;
- /**
- * Instantiate a Calculation engine logger.
- *
- * @param CyclicReferenceStack $stack
- */
- public function __construct(CyclicReferenceStack $stack)
- {
- $this->cellStack = $stack;
- }
- /**
- * Enable/Disable Calculation engine logging.
- *
- * @param bool $pValue
- */
- public function setWriteDebugLog($pValue)
- {
- $this->writeDebugLog = $pValue;
- }
- /**
- * Return whether calculation engine logging is enabled or disabled.
- *
- * @return bool
- */
- public function getWriteDebugLog()
- {
- return $this->writeDebugLog;
- }
- /**
- * Enable/Disable echoing of debug log information.
- *
- * @param bool $pValue
- */
- public function setEchoDebugLog($pValue)
- {
- $this->echoDebugLog = $pValue;
- }
- /**
- * Return whether echoing of debug log information is enabled or disabled.
- *
- * @return bool
- */
- public function getEchoDebugLog()
- {
- return $this->echoDebugLog;
- }
- /**
- * Write an entry to the calculation engine debug log.
- */
- public function writeDebugLog(...$args)
- {
- // Only write the debug log if logging is enabled
- if ($this->writeDebugLog) {
- $message = implode($args);
- $cellReference = implode(' -> ', $this->cellStack->showStack());
- if ($this->echoDebugLog) {
- echo $cellReference,
- ($this->cellStack->count() > 0 ? ' => ' : ''),
- $message,
- PHP_EOL;
- }
- $this->debugLog[] = $cellReference .
- ($this->cellStack->count() > 0 ? ' => ' : '') .
- $message;
- }
- }
- /**
- * Clear the calculation engine debug log.
- */
- public function clearLog()
- {
- $this->debugLog = [];
- }
- /**
- * Return the calculation engine debug log.
- *
- * @return string[]
- */
- public function getLog()
- {
- return $this->debugLog;
- }
- }
|