Browse Source

ZF-10682: fixed undefined offset: 0 notice in Zend_Cache_Frontend_File

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@23329 44c647ce-9c0f-0410-b52a-842ac1e357ba
mabe 15 years ago
parent
commit
0120a090c9
2 changed files with 28 additions and 11 deletions
  1. 19 10
      library/Zend/Cache/Frontend/File.php
  2. 9 1
      tests/Zend/Cache/FileFrontendTest.php

+ 19 - 10
library/Zend/Cache/Frontend/File.php

@@ -97,22 +97,31 @@ class Zend_Cache_Frontend_File extends Zend_Cache_Core
     }
 
     /**
-     * Change the master_file option
+     * Change the master_files option
      *
-     * @param string $masterFile the complete path and name of the master file
+     * @param array $masterFiles the complete paths and name of the master files
      */
-    public function setMasterFiles($masterFiles)
+    public function setMasterFiles(array $masterFiles)
     {
-        clearstatcache();
-        $this->_specificOptions['master_file'] = $masterFiles[0]; // to keep a compatibility
-        $this->_specificOptions['master_files'] = $masterFiles;
+        $this->_specificOptions['master_file']  = null; // to keep a compatibility
+        $this->_specificOptions['master_files'] = null;
         $this->_masterFile_mtimes = array();
+
+        clearstatcache();
         $i = 0;
         foreach ($masterFiles as $masterFile) {
-            $this->_masterFile_mtimes[$i] = @filemtime($masterFile);
-            if ((!($this->_specificOptions['ignore_missing_master_files'])) && (!($this->_masterFile_mtimes[$i]))) {
-                Zend_Cache::throwException('Unable to read master_file : '.$masterFile);
+            $mtime = @filemtime($masterFile);
+
+            if (!$this->_specificOptions['ignore_missing_master_files'] && !$mtime) {
+                Zend_Cache::throwException('Unable to read master_file : ' . $masterFile);
+            }
+
+            $this->_masterFile_mtimes[$i] = $mtime;
+            $this->_specificOptions['master_files'][$i] = $masterFile;
+            if ($i === 0) { // to keep a compatibility
+                $this->_specificOptions['master_files'] = $masterFile;
             }
+
             $i++;
         }
     }
@@ -127,7 +136,7 @@ class Zend_Cache_Frontend_File extends Zend_Cache_Core
      */
     public function setMasterFile($masterFile)
     {
-          $this->setMasterFiles(array(0 => $masterFile));
+          $this->setMasterFiles(array($masterFile));
     }
 
     /**

+ 9 - 1
tests/Zend/Cache/FileFrontendTest.php

@@ -77,7 +77,15 @@ class Zend_Cache_FileFrontendTest extends PHPUnit_Framework_TestCase {
         if (!$this->_instance3) {
             touch($this->_masterFile1, 123455);
             touch($this->_masterFile2, 123455);
-            $this->_instance3 = new Zend_Cache_Frontend_File(array('master_files' => array($this->_masterFile1, $this->_masterFile2)));
+            $this->_instance3 = new Zend_Cache_Frontend_File(
+                array(
+                    'master_files' => array(
+                        // ZF-10682: test Undefined offset: 0
+                        'file1' => $this->_masterFile1,
+                        'file2' => $this->_masterFile2
+                    )
+                )
+            );
             $this->_backend = new Zend_Cache_Backend_Test();
             $this->_instance3->setBackend($this->_backend);
         }