<?php
class FileAccess {
private $root;
private $newcontent;
private $file;
protected static $instance;
private $default_path = true;
public static function getInstance(){
if(is_null(self::$instance)){
self::$instance = new self();
}
return self::$instance;
}
protected function __construct(){
}
public function set($file){
$file = preg_replace('#[\\\\/]+#', DIRECTORY_SEPARATOR, $file);
$this -> file = $file;
return $this;
}
public function get(){
if($this -> file){
return $this -> file;
}
return null;
}
public function save($string){
if($this -> validateDirectory()){
file_put_contents($this -> get(),$string);
return $this;
}
}
public function saveAppend($string){
if($this -> validateDirectory()){
file_put_contents($this -> get(),$string, FILE_APPEND);
return $this;
}
}
public function savePrepend($string){
if($this -> validateDirectory()){
$handle = fopen($this -> get(),'a+');
fclose($handle);
$handle = fopen($this -> get(),'r+');
$len = strlen($string);
$final_len = filesize($this -> get()) + $len;
$cache_old = fread($handle, $len);
rewind($handle);
$i = 1;
while (ftell($handle) < $final_len) {
fwrite($handle, $string);
$string = $cache_old;
$cache_old = fread($handle, $len);
fseek($handle, $i * $len);
$i++;
}
fclose($handle);
}
return $this;
}
public function exists(){
$args = func_get_args();
if(!$args){
return file_exists($this -> get());
} else {
return file_exists($args[0]);
}
}
protected function validateDirectory(){
$args = func_get_args();
if(!$args){
$directory = dirname ($this -> get());
} else {
$directory = dirname ($args[0]);
}
if(!is_dir($directory)){
if(file_exists($directory)){
return false;
}
$this -> validateDirectory($directory);
if(is_writable(dirname($directory))){
mkdir($directory);
} else {
return false;
}
}
return true;
}
public function render(){
if($this -> exists()){
return file_get_contents($this -> get());
}
return false;
}
public function delete(){
if($this -> exists()){
return @unlink($this -> get());
}
return false;
}
public function modified(){
if($this -> exists()){
return filemtime($this -> get());
}
return false;
}
public function getAge(){
if(($mod = $this -> modified())){
return $_SERVER["REQUEST_TIME"] - $mod;
}
return false;
}
}
|