Go\Instrument\Transformer\CachingTransformer::transform PHP Method

transform() public method

This method may transform the supplied source and return a new replacement for it
public transform ( StreamMetaData $metadata ) : boolean
$metadata StreamMetaData Metadata for source
return boolean Return false if transformation should be stopped
    public function transform(StreamMetaData $metadata)
    {
        // Do not create a cache
        if (!$this->cacheManager->getCacheDir()) {
            return $this->processTransformers($metadata);
        }
        $originalUri = $metadata->uri;
        $wasProcessed = false;
        $cacheUri = $this->cacheManager->getCachePathForResource($originalUri);
        // Guard to disable overwriting of original files
        if ($cacheUri === $originalUri) {
            return false;
        }
        $lastModified = filemtime($originalUri);
        $cacheState = $this->cacheManager->queryCacheState($originalUri);
        $cacheModified = $cacheState ? $cacheState['filemtime'] : 0;
        if ($cacheModified < $lastModified || isset($cacheState['cacheUri']) && $cacheState['cacheUri'] !== $cacheUri || !$this->container->isFresh($cacheModified)) {
            $wasProcessed = $this->processTransformers($metadata);
            if ($wasProcessed) {
                $parentCacheDir = dirname($cacheUri);
                if (!is_dir($parentCacheDir)) {
                    mkdir($parentCacheDir, $this->cacheFileMode, true);
                }
                file_put_contents($cacheUri, $metadata->source, LOCK_EX);
                // For cache files we don't want executable bits by default
                chmod($cacheUri, $this->cacheFileMode & ~0111);
            }
            $this->cacheManager->setCacheState($originalUri, array('filemtime' => isset($_SERVER['REQUEST_TIME']) ? $_SERVER['REQUEST_TIME'] : time(), 'cacheUri' => $wasProcessed ? $cacheUri : null));
            return $wasProcessed;
        }
        if ($cacheState) {
            $wasProcessed = isset($cacheState['cacheUri']);
        }
        if ($wasProcessed) {
            $metadata->source = file_get_contents($cacheUri);
        }
        return $wasProcessed;
    }