소스 검색

ZF-7894 - Temporarily include a blacklist for certain unwelcome files in Zend_Tool IncludePathLoader until it will be removed in 1.10

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@19144 44c647ce-9c0f-0410-b52a-842ac1e357ba
beberlei 16 년 전
부모
커밋
3d99d19793
2개의 변경된 파일27개의 추가작업 그리고 0개의 파일을 삭제
  1. 4 0
      library/Zend/Tool/Framework/Loader/Abstract.php
  2. 23 0
      library/Zend/Tool/Framework/Loader/IncludePathLoader.php

+ 4 - 0
library/Zend/Tool/Framework/Loader/Abstract.php

@@ -84,6 +84,10 @@ abstract class Zend_Tool_Framework_Loader_Abstract implements Zend_Tool_Framewor
 
         // loop through files and find the classes declared by loading the file
         foreach ($this->_retrievedFiles as $file) {
+            if(is_dir($file)) {
+                continue;
+            }
+
             $classesLoadedBefore = get_declared_classes();
             $oldLevel = error_reporting(E_ALL | ~E_STRICT); // remove strict so that other packages wont throw warnings
             // should we lint the files here? i think so

+ 23 - 0
library/Zend/Tool/Framework/Loader/IncludePathLoader.php

@@ -90,6 +90,10 @@ class Zend_Tool_Framework_Loader_IncludePathLoader extends Zend_Tool_Framework_L
 
             // iterate over the accepted items
             foreach ($iterator as $item) {
+                $file = (string)$item;
+                if($this->_fileIsBlacklisted($file)) {
+                    continue;
+                }
 
                 // ensure that the same named file from separate include_paths is not loaded
                 $relativeItem = preg_replace('#^' . preg_quote($realIncludePath . DIRECTORY_SEPARATOR, '#') . '#', '', $item->getRealPath());
@@ -112,4 +116,23 @@ class Zend_Tool_Framework_Loader_IncludePathLoader extends Zend_Tool_Framework_L
         return $files;
     }
 
+    /**
+     *
+     * @param  string $file
+     * @return bool
+     */
+    protected function _fileIsBlacklisted($file)
+    {
+        $blacklist = array(
+            "PHPUnit".DIRECTORY_SEPARATOR."Framework",
+            "Zend".DIRECTORY_SEPARATOR."OpenId".DIRECTORY_SEPARATOR."Provider"
+        );
+
+        foreach($blacklist AS $blacklitedPattern) {
+            if(strpos($file, $blacklitedPattern) !== false) {
+                return true;
+            }
+        }
+        return false;
+    }
 }