[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * PHPExcel_CachedObjectStorage_Igbinary 5 * 6 * Copyright (c) 2006 - 2015 PHPExcel 7 * 8 * This library is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU Lesser General Public 10 * License as published by the Free Software Foundation; either 11 * version 2.1 of the License, or (at your option) any later version. 12 * 13 * This library is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public 19 * License along with this library; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 * 22 * @category PHPExcel 23 * @package PHPExcel_CachedObjectStorage 24 * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) 25 * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL 26 * @version ##VERSION##, ##DATE## 27 */ 28 class PHPExcel_CachedObjectStorage_Igbinary extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache 29 { 30 /** 31 * Store cell data in cache for the current cell object if it's "dirty", 32 * and the 'nullify' the current cell object 33 * 34 * @return void 35 * @throws PHPExcel_Exception 36 */ 37 protected function storeData() 38 { 39 if ($this->currentCellIsDirty && !empty($this->currentObjectID)) { 40 $this->currentObject->detach(); 41 42 $this->cellCache[$this->currentObjectID] = igbinary_serialize($this->currentObject); 43 $this->currentCellIsDirty = false; 44 } 45 $this->currentObjectID = $this->currentObject = null; 46 } // function _storeData() 47 48 49 /** 50 * Add or Update a cell in cache identified by coordinate address 51 * 52 * @param string $pCoord Coordinate address of the cell to update 53 * @param PHPExcel_Cell $cell Cell to update 54 * @return PHPExcel_Cell 55 * @throws PHPExcel_Exception 56 */ 57 public function addCacheData($pCoord, PHPExcel_Cell $cell) 58 { 59 if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { 60 $this->storeData(); 61 } 62 63 $this->currentObjectID = $pCoord; 64 $this->currentObject = $cell; 65 $this->currentCellIsDirty = true; 66 67 return $cell; 68 } // function addCacheData() 69 70 71 /** 72 * Get cell at a specific coordinate 73 * 74 * @param string $pCoord Coordinate of the cell 75 * @throws PHPExcel_Exception 76 * @return PHPExcel_Cell Cell that was found, or null if not found 77 */ 78 public function getCacheData($pCoord) 79 { 80 if ($pCoord === $this->currentObjectID) { 81 return $this->currentObject; 82 } 83 $this->storeData(); 84 85 // Check if the entry that has been requested actually exists 86 if (!isset($this->cellCache[$pCoord])) { 87 // Return null if requested entry doesn't exist in cache 88 return null; 89 } 90 91 // Set current entry to the requested entry 92 $this->currentObjectID = $pCoord; 93 $this->currentObject = igbinary_unserialize($this->cellCache[$pCoord]); 94 // Re-attach this as the cell's parent 95 $this->currentObject->attach($this); 96 97 // Return requested entry 98 return $this->currentObject; 99 } // function getCacheData() 100 101 102 /** 103 * Get a list of all cell addresses currently held in cache 104 * 105 * @return string[] 106 */ 107 public function getCellList() 108 { 109 if ($this->currentObjectID !== null) { 110 $this->storeData(); 111 } 112 113 return parent::getCellList(); 114 } 115 116 117 /** 118 * Clear the cell collection and disconnect from our parent 119 * 120 * @return void 121 */ 122 public function unsetWorksheetCells() 123 { 124 if (!is_null($this->currentObject)) { 125 $this->currentObject->detach(); 126 $this->currentObject = $this->currentObjectID = null; 127 } 128 $this->cellCache = array(); 129 130 // detach ourself from the worksheet, so that it can then delete this object successfully 131 $this->parent = null; 132 } // function unsetWorksheetCells() 133 134 135 /** 136 * Identify whether the caching method is currently available 137 * Some methods are dependent on the availability of certain extensions being enabled in the PHP build 138 * 139 * @return boolean 140 */ 141 public static function cacheMethodIsAvailable() 142 { 143 if (!function_exists('igbinary_serialize')) { 144 return false; 145 } 146 147 return true; 148 } 149 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |