Сам класс

<?php
ini_set('display_errors', false);

class velPath
{  	
	protected $infoLang = array();
	protected $flagErr = true;
	
	//сохраняем массивы в свойствах 
	function __construct($lang='ru',$pach = '') {
		$this->infoLang = include  $pach.'velPath_'.$lang.'.php';
	}
	
	/**
     * Создает уникальный набор символов
     * $len     - Количество символов в случайном имени
    */
	function uniqidSymbLinker($len = 5) {
		$arr = array_merge( range(0, 9), range('a','z'), range('A', 'Z') );
		shuffle($arr);
		foreach(array_rand($arr, $len) as $index)
			$key .= $arr[$index];
		return $key;
	}
	
	/**
     * Создает уникальный набор символов
     * $len     - Количество символов в случайном имени
    */
	function uniqidSymbTwin($len = 5) {
		$a = range(0, 9); $b = range('a','z'); $c = range('A', 'Z');
		$arr = array_merge($a, $b); $arr = array_merge($arr, $c); $arr = array_merge($arr, $arr);         
		$rand = microtime(true); $key  = '';
			
		for($i = 0; $i < $len; $i++) {
			shuffle($arr);
			$key .= $arr[(round(($rand * 1000 - floor($rand * 1000)),2) * 100 )];
			$rand = microtime(true);
		}
		return $key;
	}
	
	/**
		 * Возвращает информацию о пути к файлу
		 * $flag	- Флаг вывода определенной информации. dirname - путь, basename - имя, extension - тип
		 * 			  По умолчанию возвращаются все элементы
	*/
	function pathInfo($path, $flag = '') {
		if(!file_exists($path)) 
			return $this->showErr($this->infoLang['errExistsPath']);
			
		$info = pathinfo($path);
		if($flag) 
			return $info[strtolower($flag)];
		else
			return $info;
	}
	
	/**
		* Возвращает новое имя для файла или каталога
		* $path	- Путь к файлу или каталогу. Если необходимо переименовать файл, то возвращается новое 
		*         имя с типом файла.
		*		  А если надо переименовать каталог, просто возвращается уникальное имя
	*/
	function newName($path) {
		if(!file_exists($path)) 
			return $this->showErr($this->infoLang['errExistsPath']);
			
		if(is_dir($path))
			return $this->uniqidSymbLinker(rand(7, 18));
		else
			return $this->uniqidSymbLinker(rand(7, 18)) . '.' . $this->pathInfo($path,'extension');
	}
	
	/**
		* Переименовывает, перемещает файл или директорию
		* $path     	- Файл или Каталог, который необходимо переименовать или переместить
		* $newFile     - Новое название файла или каталога. Если оставить пустым или присвоить false, 
		*                 будет создаваться новое имя.
		*				  Если ввести путь, отличающийся от исходного, файл или каталог будет перемещен
		* $flag		- Если установить true, будет браться тип исходника
	*/ 
	function editPath($path, $newFile = false, $flag = false) {
		if(!file_exists($path)) 
			return $this->showErr($this->infoLang['errExistsPath']);
		
		if(!$newFile) 
			$newFile = $this->newName($path);
		else 
			if(is_file($path) && $flag == true) $newFile = $newFile . '.' . $this->pathInfo($path,'extension');
			
		if(rename($path,$newFile)) 
			return true;
		else 
			return $this->showErr($this->infoLang['errEditPath']);
	}
	
	/**
		* Создает новый каталог
		* $nameDir     - Название папки, которую необходимо создать
		* $chmod     	- Права для папки
	*/
	function newDir($nameDir, $chmod = 0777){
		if(strlen($nameDir) < 1) 
			return $this->showErr($this->infoLang['errEnterNameNewDir']);
			
		if(mkdir($nameDir, $chmod))
			return true;
		else
			return $this->showErr($this->infoLang['errNewDir']);
	}
	
	/**
		* Копирует файл
		* $path     	- Путь к файлу, который необходимо скопировать
		* $newPath     - Новый путь, куда необходимо скопировать файл. По умолчанию создает новое имя 
		*                 для файла и копирует в тот же каталог,
		*				  где находится исходник
		* $flagExt		- Флаг типа. По умолчанию, присваивается тип исходника
	*/
	function copyFile($path, $newPath = false, $flagExt = false) {
		if(!file_exists($path) || !is_file($path)) 
			return $this->showErr($this->infoLang['errExistsPath']);
		
		if(!$newPath) 
			$newPath = $this->newName($path);
		else 
			if(!$flagExt) $newPath = $newPath . '.' . $this->pathInfo($path,'extension');
			
		if(copy($path,$newPath)) 
			return true;
		else 
			return $this->showErr($this->infoLang['errCopyFile']);
	}
	
	/**
		* Копирует каталог
		* $pathDir    	- Каталог, который необходимо скопировать
		* $outDir     	- Куда необходимо скопировать.
	*/
	function copyDir($pathDir, $outDir) {
		if(!file_exists($pathDir)) 
			return $this->showErr($this->infoLang['errExistsPath']);
		
		if(!is_dir($outDir)) 
			$this->newDir($outDir);
			
		$dir = opendir($pathDir);
		while(false !== ($check = readdir($dir))) {
			if($check != '.' && $check != '..') {
				if(is_dir($pathDir . '/' . $check)) {
					$this->newDir($outDir . '/' . $check);
					$this->copyDir($pathDir . '/' . $check, $outDir . '/' . $check);
				}
				
				else if(is_file($pathDir . '/' . $check)) {
					$this->copyFile($pathDir . '/' . $check, $outDir . '/' . $this->pathInfo($check,'basename'), true);
				}
			}
		}
		return true;
	}
	
	/**
		* Конвертирует размер файла
		* $size     - Размер файла
	*/
	function fileSizeFormat($size) {
		$pos = 0;
		$size = floor($size);
		$ar = array( 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB' );
		
		while($size >= 1024) {
			$size /= 1024; 
			$pos++; 
		}
		
		$str = round($size,2) . ' ' . $ar[$pos];
		return $str;
	}
	
	/**
		* Возвращает размер файла
		* $path     	- Абсолютный путь к файлу
		* $format   	- Флаг форматирование размера
	*/
	function getFileSize($path, $format = false) {
		if(!file_exists($path)) 
			return $this->showErr($this->infoLang['errExistsPath']);
		
		$size = floor(filesize($path));
		if($format) 
			$size = $this->fileSizeFormat($size);
			
		return $size;
	}
	
	/**
		* Читает .txt файл
		* $pathFile   - Путь к файлу, из которого необходимо вытащить текст
		* $flag	   - 1: Возвращает текст в виде одной строки; 2: Возвращает текст в массиве
	*/
	function readTxt($pathFile,$flag = 1) {
		if(!file_exists($pathFile)) 
			return $this->showErr($this->infoLang['errExistsPath']);
			
		if($flag == 1) {
			if(file_get_contents($pathFile)) 
				return true;
			else
				return $this->showErr($this->infoLang['errReadTxt']);
		} else {
			if(file($this->pathTrim($file)))
				return true;
			else
				return $this->showErr($this->infoLang['errReadTxt']);
		}
	}
	
	/**
		* Создает .txt файл
		* $pathFile   - Путь, где необходимо создать текстовый документ
		* $value	   - Текст, который необходимо сохранить в файле. По умолчанию документ создается пустой
	*/
	function newTxt($pathFile,$value = '') {
		if(file_put_contents($pathFile,$value)) 
			return true;
		else 
			return $this->showErr($this->infoLang['errNewTxt']);
	}
	
	/**
		* Удаляет каталог, со всем содержимым
		* $path   - Путь к дериктории, которую надо удалить
	*/
	function removeDir($path) {
		if(!file_exists($path))
			return $this->showErr($this->infoLang['errExistsPath']);
        
		if(is_file($path)) 
			return $this->remove($path);  
        
		if(!is_dir($path)) 
			return true;
		
		$d = opendir($path);
		if(!$d)
			return $this->showErr($this->infoLang['errExistsFile']);
			
		while(false !== ($f = readdir($d))) {
			if($f == '.' || $f == '..') continue;
			$abs = $path . '/' . $f;
			$this->removeDir($abs);
		}
		
		closedir($d);
		if(rmdir($path))
			return true;
		else 
			return $this->showErr($this->infoLang['errDeletePath']);
	}
	
	/**
		* Удаляет файл
		* $path   - Путь к файлу, который надо удалить
	*/
	function remove($path) {
		if(!file_exists($path))
			return $this->showErr($this->infoLang['errExistsPath']);
		
		if(unlink($path))
			return true;
		else
			return $this->showErr($this->infoLang['errDeletePath']);
	}
	
	/**
		* Возвращает позицию последнего вхождения символа 
		* $haystack  - Строка для поиска
		* $needle    - Искомый символ
	*/
	function strPos($haystack, $needle) {
		$index = strpos(strrev($haystack), strrev($needle));
		if($index === false)
			return false;
		$index = strlen($haystack) - strlen($needle) - $index;
		return $index;
	}
	
	/**
		* Ищет файл с заданным именем последовательно вверх по иерархии папок. 
		* Если файл найден - возвращает путь к найденному файлу, в противном случае возвращает сообщение
		* $filename - Имя искомого файла.
		* $dirstart - Путь к разделу с которого нужно начинать поиск файла. (абсалютный путь от корня сайта)
	*/
	function searchFile($fileName, $dirStart){
		$docRoot  = $_SERVER['DOCUMENT_ROOT'];
		$dirStart = str_replace($docRoot, '', $dirStart);
		if(strlen($dirStart) <= 0)
			return $this->showErr($this->infoLang['errExistsPath']);
			
		while(!file_exists($docRoot . '/' . $dirStart . '/' . $fileName)) {
			$p = $this->strPos($dirStart, '/');
			if($p === false) 
				break;
			$dirStart = substr($dirStart, 0, $p);
		}
		
		if($p === false)
			return $this->showErr($this->infoLang['errSearchExistsFile']);
		
		return $docRoot . '/' . $dirStart . '/' . $fileName;
	}
	
	/**
		* Cоздает все каталоги входящие в указанный путь, в случае успеха возвращает true
		* $path   - Путь. Можно использовать /newFolder, ../newFolder, newFolder/folder
	*/
	function dirNewPath($path) {
		if(strlen($path) < 1 || $path == '/') 
			return $this->showErr($this->infoLang['errExistsPath']);
			
		$dirs = array();
		if(substr($path,0,1) == '/')
			$path = $_SERVER['DOCUMENT_ROOT'] . $path;
		if(!file_exists($p = $this->strPos($path, '/')))
			$this->newDir($p);
			
		while($p > 0) {
			if(is_dir($path)) { 
				if(!is_writable($path)) chmod($path, 0777); 
				break;
			}
			$dirs[] = substr($path, $p + 1);
			$path = substr($path, 0, $p);
			$p = $this->strPos($path, '/');
		}
		
		for($i = sizeof($dirs) - 1; $i >= 0; $i--) {
			$path = $path . '/' . $dirs[$i];
			$this->newDir($path);
		}
		
		return true;
	}
	
	/**
		* Проверяет допустимые размер файла и расширение
		* $path     - Абсолютный путь к файлу
		* $maxsize  - максимальный размер файла
		* $extlist  - список расширений
	*/
	function fileValid($path, $maxSize = 0, $extList = '') {
		if(!is_file($path))
			return $this->showErr($this->infoLang['errExistsPath']);
			
        if($this->getFileSize($path) > $maxSize) 
			return $this->showErr($this->infoLang['errFileSizeOverflow']);

		if(strlen(trim($extList)) > 0) {
			$list = explode(',', str_replace(' ', '', trim($extList)));
			return(sizeof($list) && !in_array($this->pathInfo($path,'extension'), $list)) 
			   ? $this->showErr($this->infoLang['errFileExtInvalid'] . implode(', ', $list))
			   : true;
		}
		
		return true;
	}
	
	/**
		* Функция для вывода ошибок
		* $err   		- Сообщение
		* $flagErr   	- true: выводит сообщение; false: выводит текст об ошибке
	*/
	function showErr($err) {
		if($this->flagErr == true) 
			return $err;
		else
			return $this->error;
	}
}

 

 

 

Языковый файл velPath_ru.php

 

<?php 
return  array(	
	'errPathCopyDir'		=>		'Неверно указана папка, которую надо скопировать',
	'errCopyFile'			=>		'Произошла ошибка при копировании файла',
	'errExistsFile'			=>		'Неверно указан путь к файлу',
	'errEnterNameNewDir'	=>		'Введите название каталога, который надо создать',
	'errNewDir'				=>		'Произошла ошибка при создании каталога',
	'errEnterNameCopyPath'	=>		'Введите название каталога, который надо скопировать',
	'errExistsEditPath'		=>		'Вы ввели путь, на несуществующий каталог',
	'errExistsPath'			=>		'Неверно указан путь к файлу или каталогу',
	'errDeletePath'			=>		'Произошла ошибка при удалении',
	'errNewTxt'				=>		'Произошла ошибка при создании .txt файла',
	'errReadTxt'			=>		'Произошла ошибка при чтении .txt файла',
	'errEditPath'			=>		'Произошла ошибка при редактировании файла',
	'errSearchExistsFile'	=>		'Файл не найден',
	'errFileSizeOverflow'	=>		'Размер файла превышает допустимую норму',
	'errFileExtInvalid'		=>		'Расширение файла не соответсвует стандарту: ',
);

Вызов с пояснениями

 

<?php 

$files = new velPath($lang);

// генерируем уникальное имя

$files->uniqidSymb(rand(3,7)); 
// создаст имя с количеством символов в диапазоне от 3 до 7
$files->uniqidSymb()); 
// создаст имя с 5 символами

$files->pathTrim('/phpPath\file.php'); 
// у случае ошибки вернет false. В случае успеха /phpPath/file.php

$files->pathInfo('phpPath/file.php'); 
// вернет массив с данными: basename - file.php, dirname - phpPath, extension - .php

$files->pathInfo('phpPath/file.php','basename'); 
// вернет - file.php

$files->pathInfo('phpPath/file.php','dirname'); 
// вернет - phpPath

$files->pathInfo('phpPath/file.php','extension'); 
// вернет - .php

$files->newName('phpPath/file.php'); 
// Если указан путь на папку, вернет случайный набор символов. Если файл, 
//вернет уникальное имя + тип файла. Пример: file.php заменился на Fdv87Svfd.php


$files->editPath('phpPath/file.php'); 
// файл: file.php будет переименован под новым именем, пример: Fdv87Svfd.php

$files->editPath('phpPath/file.php','phpPath/newFile.php'); 
// файл: file.php будет переименован под новым именем newFile.php

$files->editPath('phpPath/file.php','phpPath/newFile',true); 
// файл: file.php будет переименован под новым именем newFile 
// + возьмется тип исходника. Итог: newFile.php

$files->editPath('phpPath/file.php','phpPath/2/newFile.php'); 
// файл: file.php будет перемещен в папку phpPath/2/

$files->newDir('myFiles'); 
// создастся новая папка рядом с классом. Можно задать права на папку, 
// добавив еще один аргумент

$files->copyFile('phpPath/file.php'); 
// файл: file.php будет скопирован под новым именем в ту же папку, где исходник. 
// Пример: Fdv87Svfd.php
$files->copyFile('phpPath/file.php', 'phpPath/2/newFile.php'); 
// файл: file.php будет скопирован под новым именем newFile.php 
// в папку phpPath/2/

$files->editPath('phpPath/file.php','phpPath/2/newFile.php',true); 
// файл: file.php будет скопирован под новым именем 
// newFile + возьмется тип исходника. Итог:  phpPath/2/Fdv87Svfd.php

$this->copyDir('phpPath','newPhpFolder'); 
// папка phpPath будет скопирована со всем содержимым 
// в новую папку newPhpFolder

$this->fileSizeFormat(7000000); 
// вернет 6.68 MB. Размер указывается в байтах

$this->getFileSize('phpPath/file.php'); 
// вернет размер файла в байтах. Пример: 7000000

$this->getFileSize('phpPath/file.php',true); 
// вернет 6.68 MB


$this->readTxt('file.txt'); 
// вернет текст в одной строке

$this->readTxt('file.txt',0); 
// вернет массив с количеством строк в файле

$this->newTxt('newFile.txt'); 
// создаст пустой .txt файл

$this->newTxt('newFile.txt','Всем привет!'); 
// создаст .txt файл с содержимым: Всем привет!


$this->removeDir('phpPath'); 
// удаляет все содержимое в папке phpPath + саму папку

$this->remove('phpPath/file.php'); 
// удалит файл: file.php

$this->searchFile('file.php','phpPath/'); 
// если найдет, выведет путь к файлу, иначе сообщение. 
// Поиск идет вверх по иерархии папок

$this->dirNewPath('/newFolder/php/files/'); 
// Создаст папки: newFolder + php + files. 
// То, есть все папки, которые указаны через слешь

$this->fileValid('phpPath/file.php'); 
// вернет true
$this->fileValid('phpPath/file.php',8000000); 
// проверит файл на размер. В случае успеха вернет true
$this->fileValid('phpPath/file.php',0,'php,jpeg,mp3'); 
// проверит тип файла.
$this->fileValid('phpPath/file.php',8000000,'php,jpeg,mp3'); 
// проверит файл на размер и тип. В случае успеха вернет true

 

 

<?php

$files = new velPath($lang);

// генерируем уникальное имя
$files->uniqidSymb(rand(3,7)); // создаст имя с количеством символов в диапазоне от 3 до 7
$files->uniqidSymb()); // создаст имя с 5 символами

$files->pathTrim('/phpPath\file.php'); // у случае ошибки вернет false. В случае успеха /phpPath/file.php

$files->pathInfo('phpPath/file.php'); // вернет массив с данными: basename - file.php, dirname - phpPath, extension - .php
$files->pathInfo('phpPath/file.php','basename'); // вернет - file.php
$files->pathInfo('phpPath/file.php','dirname'); // вернет - phpPath
$files->pathInfo('phpPath/file.php','extension'); // вернет - .php

$files->newName('phpPath/file.php'); // Если указан путь на папку, вернет случайный набор символов. Если файл,
                                    //вернет уникальное имя + тип файла. Пример: file.php заменился на Fdv87Svfd.php

$files->editPath('phpPath/file.php'); // файл: file.php будет переименован под новым именем, пример: Fdv87Svfd.php
$files->editPath('phpPath/file.php','phpPath/newFile.php'); // файл: file.php будет переименован под новым именем newFile.php
$files->editPath('phpPath/file.php','phpPath/newFile',true); // файл: file.php будет переименован под новым именем newFile
                                                            //+ возьмется тип исходника. Итог: newFile.php
$files->editPath('phpPath/file.php','phpPath/2/newFile.php'); // файл: file.php будет перемещен в папку phpPath/2/

$files->newDir('myFiles'); // создастся новая папка рядом с классом. Можно задать права на папку, добавив еще один аргумент

$files->copyFile('phpPath/file.php'); // файл: file.php будет скопирован под новым именем в ту же папку, где исходник.
                                    //Пример: Fdv87Svfd.php
$files->copyFile('phpPath/file.php', 'phpPath/2/newFile.php'); // файл: file.php будет скопирован под новым именем newFile.php
                                                            //в папку phpPath/2/
$files->editPath('phpPath/file.php','phpPath/2/newFile.php',true); // файл: file.php будет скопирован под новым именем
                                                                //newFile + возьмется тип исходника. Итог:  phpPath/2/Fdv87Svfd.php

$this->copyDir('phpPath','newPhpFolder'); // папка phpPath будет скопирована со всем содержимым
                                            //в новую папку newPhpFolder

$this->fileSizeFormat(7000000); // вернет 6.68 MB. Размер указывается в байтах

$this->getFileSize('phpPath/file.php'); // вернет размер файла в байтах. Пример: 7000000
$this->getFileSize('phpPath/file.php',true); // вернет 6.68 MB

$this->readTxt('file.txt'); // вернет текст в одной строке
$this->readTxt('file.txt',0); // вернет массив с количеством строк в файле

$this->newTxt('newFile.txt'); // создаст пустой .txt файл
$this->newTxt('newFile.txt','Всем привет!'); // создаст .txt файл с содержимым: Всем привет!

$this->removeDir('phpPath'); // удаляет все содержимое в папке phpPath + саму папку
$this->remove('phpPath/file.php'); // удалит файл: file.php

$this->searchFile('file.php','phpPath/'); //если найдет, выведет путь к файлу, иначе сообщение.
                                            //Поиск идет вверх по иерархии папок

$this->dirNewPath('/newFolder/php/files/'); // Создаст папки: newFolder + php + files.
                                            //То, есть все папки, которые указаны через слешь

$this->fileValid('phpPath/file.php'); // вернет true
$this->fileValid('phpPath/file.php',8000000); // проверит файл на размер. В случае успеха вернет true
$this->fileValid('phpPath/file.php',0,'php,jpeg,mp3'); // проверит тип файла.
$this->fileValid('phpPath/file.php',8000000,'php,jpeg,mp3'); // проверит файл на размер и тип. В случае успеха вернет true