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; }
/** * Создание 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)); }