Last active
February 2, 2017 12:34
-
-
Save dastanaron/e31f51eea4276ffd7ad6d5f40c1716c2 to your computer and use it in GitHub Desktop.
ValidatorFiles
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* Класс ValidatorFiles предназначен для проверки файлов или папок на возможность создания, записи, удаления и возможности манипуляций с файлами | |
* Класс не поддерживает вызов статических методов, при вызове класса, необходимо передать переменные пути и флаг вывода массива | |
* | |
* |-----Свойства класса-------------------------------------------------| | |
* | protected $path - путь, над которым будет произведен анализ | | |
* | protected $showaccess - флаг вывода информации | | |
* |---------------------------------------------------------------------| | |
* | |
* |-----Методы класса---------------------------------------------------| | |
* | public ISPermissionWrite() - Описание метода ниже | | |
* | private getaccesspermission() - внутренний метод класса | | |
* | для сбора информации о владельце | | |
* |---------------------------------------------------------------------| | |
* | |
* Метод ISPermissionWrite() - проверяет возможность записи в файл, или создание файла в папке, взависимости от переданного, при вызове экземпляра класса пути | |
* Данный метод используем переменные переданные при вызове класса. Если при создании экземпляра класса передан второй параметр true, то функция возвратит массив | |
* с информацией о владельце файла или папки, переданном по умолчанию. Если второй параметр не передан или false, то метод будет возвращать true, в случае | |
* возможности записи, или false в обратном случае | |
* | |
* | |
* Пример кода: | |
* $validator = new ValidatorFiles('inc/', true); | |
* var_dump($validator->ISPermissionWrite()); //Выведет массив данных о владельце папки | |
* | |
* | |
* | |
*/ | |
class ValidatorFiles { | |
protected $path; | |
protected $showaccess; | |
public function __construct($path='./', $showaccess=false) { | |
if(is_string($path) && is_bool($showaccess)) { | |
$this->path = $path; | |
$this->showaccess = $showaccess; | |
} | |
else { | |
print 'Ошибка: не верные типы передаваемых параметров'; | |
} | |
} | |
public function ISPermissionWrite() { | |
if (is_dir($this->path)) { | |
$file = $this->path . '/test.test'; | |
@file_put_contents($file, 'test'); | |
if (file_exists($file)) { | |
unlink($file); | |
if ($this->showaccess) { | |
return $this->getaccesspermission(); | |
} | |
else { | |
return true; | |
} | |
} | |
else { | |
if ($this->showaccess) { | |
return $this->getaccesspermission(); | |
} | |
else { | |
return false; | |
} | |
} | |
} | |
else { | |
if(file_exists($this->path)) { | |
if ($this->showaccess) { | |
return $this->getaccesspermission(); | |
} | |
else { | |
return is_writable($this->path); | |
} | |
} | |
} | |
} | |
private function getaccesspermission() { | |
$accessparam = array(); | |
$accessparam['access_rule'] = substr(sprintf('%o', fileperms($this->path)), -4); | |
$accessparam['owner_uid'] = fileowner($this->path); | |
$accessparam['owner'] = posix_getpwuid ($accessparam['owner_uid']); | |
return $accessparam; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment