for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Sesshin\Store;
class FileStore implements StoreInterface
{
/** @var string */
protected $dir;
/**
* @param string
*/
public function __construct($dir)
$this->dir = $dir;
}
* @param string $id
* @return bool|mixed
public function fetch($id)
$fileName = $this->getFileName($id);
if (file_exists($fileName)) {
list($expirationTime, $content) = explode('|', file_get_contents($fileName));
if ($expirationTime < time()) {
$this->delete($id);
return false;
return unserialize($content);
* @param mixed $data
* @param int $lifeTime
* @return int
public function save($id, $data, $lifeTime)
$expirationTime = time() + $lifeTime;
$content = $expirationTime . '|' . serialize($data);
return file_put_contents($fileName, $content);
* @return bool
public function delete($id)
return unlink($this->getFileName($id));
* @return string
protected function getFileName($id)
return $this->dir . DIRECTORY_SEPARATOR . $id . '.sess';