Example #1
0
 public static function get_classes($location)
 {
     $directory = new RecursiveDirectoryIterator($location);
     $iterator = new RecursiveIteratorIterator($directory);
     $regex = new RegexIterator($iterator, '/^.+\\.php$/i', RecursiveRegexIterator::GET_MATCH);
     $classes = array();
     foreach ($regex as $path) {
         $expected = FALSE;
         $level = $minLevel = 0;
         $name = '';
         $file = $path[0];
         if (!joosFile::is_readable($file)) {
             continue;
         }
         $php_file_source = file_get_contents($file);
         $class_location = str_replace(JPATH_BASE . DS, '', $file);
         foreach (@token_get_all($php_file_source) as $token) {
             if (is_array($token)) {
                 switch ($token[0]) {
                     case T_COMMENT:
                     case T_DOC_COMMENT:
                     case T_WHITESPACE:
                         continue 2;
                     case T_NS_SEPARATOR:
                     case T_STRING:
                         if ($expected) {
                             $name .= $token[1];
                         }
                         continue 2;
                     case T_CLASS:
                     case T_INTERFACE:
                         $expected = $token[0];
                         $name = '';
                         continue 2;
                     case T_CURLY_OPEN:
                     case T_DOLLAR_OPEN_CURLY_BRACES:
                         $level++;
                 }
             }
             if ($expected) {
                 switch ($expected) {
                     case T_CLASS:
                     case T_INTERFACE:
                         if ($level === $minLevel) {
                             $classes[$name] = $class_location;
                         }
                         break;
                 }
                 $expected = NULL;
             }
             if ($token === '{') {
                 $level++;
             } elseif ($token === '}') {
                 $level--;
             }
         }
     }
     ksort($classes);
     return $classes;
 }
Example #2
0
 /**
  * Создание GD-ресурса из файла
  *
  * @param  string $filename Имя файла.
  *
  * @return mixed GD image resource или FALSE при неудаче.
  * @access public
  * @static
  */
 public static function imageCreateFromFile($filename)
 {
     if (!joosFile::exists($filename) || !joosFile::is_readable($filename)) {
         throw new joosImageLibrariesException('Unable to open file "' . $filename . '"');
     }
     // determine image format
     list(, , $type) = getimagesize($filename);
     switch ($type) {
         case IMAGETYPE_JPEG:
             return imagecreatefromjpeg($filename);
             break;
         case IMAGETYPE_GIF:
             return imagecreatefromgif($filename);
             break;
         case IMAGETYPE_PNG:
             return imagecreatefrompng($filename);
             break;
     }
     throw new joosImageLibrariesException('Unsupport image type for file :file', array(':file' => $filename));
 }