| Code Coverage | ||||||||||
| Classes and Traits | Functions and Methods | Lines | ||||||||
| Total |  | 50.00% | 1 / 2 |  | 25.00% | 1 / 4 | CRAP |  | 52.63% | 10 / 19 | 
| Path |  | 0.00% | 0 / 1 |  | 25.00% | 1 / 4 | 17.61 |  | 52.63% | 10 / 19 | 
| __construct($pathString, $createNonexisting = false) |  | 0.00% | 0 / 1 | 3.71 |  | 57.14% | 4 / 7 | |||
| __toString() |  | 100.00% | 1 / 1 | 1 |  | 100.00% | 1 / 1 | |||
| resolve($path) |  | 0.00% | 0 / 1 | 5.40 |  | 55.56% | 5 / 9 | |||
| _create($pathString) |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 2 | |||
| FileDoesNotExistException |  | 100.00% | 1 / 1 | 0 | ||||||
| <?php | |
| /** | |
| * Path is a utility to simplify working with directories. | |
| */ | |
| namespace aae\fs { | |
| /** | |
| * @author Axel Ancona Esselmann | |
| * @package aae\cdt | |
| */ | |
| class Path { | |
| protected $_pathString = null; | |
| public function __construct($pathString, $createNonexisting = false) { | |
| $pathString = $this->resolve($pathString); | |
| if (!file_exists($pathString)) { | |
| if ($createNonexisting) $this->_create($pathString); | |
| else throw new FileDoesNotExistException("Error: '$pathString' is not a valid path.", 213141057); | |
| } | |
| $this->_pathString = $pathString; | |
| } | |
| public function __toString() { | |
| return strval($this->_pathString); | |
| } | |
| public static function resolve($path) { | |
| if (substr($path, 0, 1) != "/") { | |
| $docRoot = $_SERVER["DOCUMENT_ROOT"]; | |
| if (substr($docRoot, -1) != "/") $docRoot .= "/"; | |
| $path = $docRoot."../".$path; | |
| } | |
| $regex = "/(.?)(\/[^\/]*\/\.\.)(.*)/"; | |
| $result = preg_replace($regex, "$1$3", $path); | |
| if ($result != $path) $result = self::resolve($result); | |
| return $result; | |
| } | |
| protected function _create($pathString) { | |
| mkdir($pathString, 0777, true); | |
| } | |
| } | |
| class FileDoesNotExistException extends \Exception {} | |
| } |