* @version 0.1 * @access public */ class directoryItem { /** * directoryItem::__construct() * * @param mixed * @return void */ public function __construct($directory, $replaceChar = '_') { $this->setDirectory($directory); $this->replaceChar = $replaceChar; } /** * directoryItem::checkAllType() * Принимает расширения файлов и проверяет файлы каталога на соответствие заданным расширениям, * если находит файл, расширение которого не заданно - возвращает false, * в другом случае true * * @param string * @return bool */ public function checkAllType() { $bln = true; $extensions = func_get_args(); foreach ($this->filearray as $key => $name) { $extensionFile = strtolower(substr($key, strpos($key, '.') + 1)); if (!in_array($extensionFile, $extensions)) { $bln = false; break; } } return $bln; } /** * directoryItem::filterType() * Принимает расширения файлов и убирает файлы из массива с теми расширениями которые не переданны * * @param string * @return void */ public function filterType() { $extensions = func_get_args(); foreach ($this->filearray as $key => $name) { $extensionFile = strtolower(substr($key, strpos($key, '.') + 1)); if (!in_array($extensionFile, $extensions)) { unset($this->filearray[$key]); } } } /** * directoryItem::removeFilter() * "Сбрасывает" фильтр функции filterType() * * @return void */ public function removeFilter() { unset($this->filearray); $this->setDirectory($this->directoryName); } /** * directoryItem::getFileArray() * Возвращает массив прочтёных файлов из заданного каталога * * @return array */ public function getFileArray() { return $this->filearray; } /** * directoryItem::sortFileArray() * Сортирует массив методом natural orderingб без учёта регистра, и возвращает его * * @return array */ public function sortFileArray() { natcasesort($this->filearray); } /** * directoryItem::getCount() * Возвращает колличество элементов находящихся в прочтённом массиве * * @return int */ public function getCount() { return count($this->filearray); } //////////////////////////////////////////////////////////////// /// private function /////////////////////////////////////////// //////////////////////////////////////////////////////////////// /** * directoryItem::setDirectory() * Открывает директорию и записывает в массив $filearray все файлы находящиеся в нём, * после чего закрывает каталог * * @param string $directory * @return void */ private function setDirectory($directory) { $this->directoryName = $directory; $this->descriptorDir = opendir($directory); while (false !== ($nameFile = readdir($this->descriptorDir))) { if (false !== is_file($directory . '/' . $nameFile)) { $titleFile = $this->createTitle($nameFile); $this->filearray[$nameFile] = $titleFile; } } closedir($this->descriptorDir); } /** * directoryItem::createTitle() * Принимает имя файла - возвращает имя без расширения и все символы(которые были переданны классу) замещает на пробелы * * @param mixed $nameFile * @return string */ private function createTitle($nameFile) { return str_replace($this->replaceChar, ' ', (substr($nameFile, 0, strpos($nameFile,'.')))); } //////////////////////////////////////////////////////////////// /// private property /////////////////////////////////////////// //////////////////////////////////////////////////////////////// /** * @var private resourse $descriptorDir дескриптор открытого файла * @var private srting $directoryName имя директории в которой ведётся работа * @var private array $filearray массив файлов каталога * @var private string $replaceChar символ который надо заменить, в имни файла, на пробел */ private $descriptorDir; private $directoryName; private $filearray = array(); private $replaceChar; } ?>