. */ namespace SP\Storage; use RuntimeException; /** * Class FileCache * * @package SP\Storage */ class FileCache implements FileStorageInterface { /** * @param string $path * * @return mixed * @throws \RuntimeException */ public function load($path) { if (!file_exists($path)) { throw new RuntimeException(sprintf(__('No es posible leer/escribir el archivo: %s'), $path)); } if (!($data = file_get_contents($path))) { throw new RuntimeException(sprintf(__('Error al leer datos del archivo: %s'), $path)); } return unserialize($data); } /** * @param string $path * @param mixed $data * @return FileStorageInterface */ public function save($path, $data) { $dir = dirname($path); if (!is_dir($dir) && mkdir($dir, 0700, true) === false) { throw new RuntimeException(sprintf(__('No es posible crear el directorio: %s'), $dir)); } if (file_exists($path) && !is_writable($path)) { throw new RuntimeException(sprintf(__('No es posible leer/escribir el archivo: %s'), $path)); } if (!file_put_contents($path, serialize($data))) { throw new RuntimeException(sprintf(__('Error al escribir datos en el archivo: %s'), $path)); } return $this; } /** * @param string $path * * @return FileStorageInterface */ public function delete($path) { if (file_exists($path) && !is_writable($path)) { throw new RuntimeException(sprintf(__('No es posible leer/escribir el archivo: %s'), $path)); } if (!unlink($path)) { throw new RuntimeException(sprintf(__('Error al eliminar el archivo: %s'), $path)); } return $this; } }