Added flushInstance() method to clear the calculation cache, but only if the calculation engine has been instantiated.
Moved precision setting from functions.php to the calculation engine constructor, with a reset when the calculation engine instance is unset... will be of value when I switch the code to support a calculation engine/cache with each instantiated PHPExcel object. git-svn-id: https://phpexcel.svn.codeplex.com/svn/trunk@67403 2327b42d-5241-43d6-9e2a-de5ac946f064
This commit is contained in:
parent
585ee1514e
commit
59e85a379d
|
@ -202,6 +202,9 @@ class PHPExcel_Calculation {
|
||||||
public $cyclicFormulaCount = 0;
|
public $cyclicFormulaCount = 0;
|
||||||
|
|
||||||
|
|
||||||
|
private $_savedPrecision = 12;
|
||||||
|
|
||||||
|
|
||||||
private static $_localeLanguage = 'en_us'; // US English (default locale)
|
private static $_localeLanguage = 'en_us'; // US English (default locale)
|
||||||
private static $_validLocaleLanguages = array( 'en' // English (default language)
|
private static $_validLocaleLanguages = array( 'en' // English (default language)
|
||||||
);
|
);
|
||||||
|
@ -1664,7 +1667,7 @@ class PHPExcel_Calculation {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function __construct() {
|
private function __construct() {
|
||||||
$localeFileDirectory = PHPEXCEL_ROOT.'PHPExcel/locale/';
|
$localeFileDirectory = PHPEXCEL_ROOT.'PHPExcel/locale/';
|
||||||
foreach (glob($localeFileDirectory.'/*',GLOB_ONLYDIR) as $filename) {
|
foreach (glob($localeFileDirectory.'/*',GLOB_ONLYDIR) as $filename) {
|
||||||
$filename = substr($filename,strlen($localeFileDirectory)+1);
|
$filename = substr($filename,strlen($localeFileDirectory)+1);
|
||||||
|
@ -1672,9 +1675,19 @@ class PHPExcel_Calculation {
|
||||||
self::$_validLocaleLanguages[] = $filename;
|
self::$_validLocaleLanguages[] = $filename;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$setPrecision = (PHP_INT_SIZE == 4) ? 12 : 16;
|
||||||
|
$this->_savedPrecision = ini_get('precision');
|
||||||
|
if ($savedPrecision < $setPrecision) {
|
||||||
|
ini_set('precision',$setPrecision);
|
||||||
|
}
|
||||||
} // function __construct()
|
} // function __construct()
|
||||||
|
|
||||||
|
|
||||||
|
public function __destruct() {
|
||||||
|
ini_set('precision',$this->_savedPrecision);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an instance of this class
|
* Get an instance of this class
|
||||||
*
|
*
|
||||||
|
@ -1690,6 +1703,20 @@ class PHPExcel_Calculation {
|
||||||
} // function getInstance()
|
} // function getInstance()
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flush the calculation cache for any existing instance of this class
|
||||||
|
* but only if a PHPExcel_Calculation instance exists
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
public static function flushInstance() {
|
||||||
|
if (isset(self::$_instance) && !is_null(self::$_instance)) {
|
||||||
|
self::$_instance->clearCalculationCache();
|
||||||
|
}
|
||||||
|
} // function flushInstance()
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* __clone implementation. Cloning should not be allowed in a Singleton!
|
* __clone implementation. Cloning should not be allowed in a Singleton!
|
||||||
*
|
*
|
||||||
|
|
|
@ -49,12 +49,6 @@ define('MAX_ITERATIONS', 256);
|
||||||
define('PRECISION', 8.88E-016);
|
define('PRECISION', 8.88E-016);
|
||||||
|
|
||||||
|
|
||||||
$savedPrecision = ini_get('precision');
|
|
||||||
if ($savedPrecision < 16) {
|
|
||||||
ini_set('precision',16);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHPExcel_Calculation_Functions
|
* PHPExcel_Calculation_Functions
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue