Tonic


src/Tonic/MetadataCacheFile.php


<?php
 
namespace Tonic;
 
/**
 * Cache resource metadata between invocations
 *
 * This class serializes the resource metadata and writes it to disk for reading in a later request.
 */
class MetadataCacheFile implements MetadataCache
{
    private $filename;
 
    public function __construct($filename)
    {
        $this->filename = $filename;
    }
 
    /**
     * Is there already cache file
     * @return boolean
     */
    public function isCached()
    {
        return is_readable($this->filename);
    }
 
    /**
     * Load the resource metadata from disk
     * @return str[]
     */
    public function load()
    {
        return unserialize(file_get_contents($this->filename));
    }
 
    /**
     * Save resource metadata to disk
     * @param  str[]   $resources Resource metadata
     * @return boolean
     */
    public function save($resources)
    {
        return file_put_contents($this->filename, serialize($resources));
    }
 
    public function clear()
    {
        @unlink($this->filename);
    }
 
    public function __toString()
    {
        return 'Metadata for '.count($this->load()).' resources stored in file "'.$this->filename.'" at '.date('r', filemtime($this->filename));
    }
 
}
 

Tonic