Contents

Cms\Classes\CodeParser

Overview

CodeParser parses the PHP code section of CMS objects.


Protected Properties

protected Cms\Classes\CmsCompoundObject $object

A reference to the CMS object being parsed.

protected string $filePath

Contains a path to the CMS object's file being parsed.

protected static mixed $cache

The internal cache, keeps parsed object information during a request.


Public Methods

public __construct()

public __construct(Cms\Classes\CmsCompoundObject $object): void

public parse()

public parse(): array 

parse the CMS object's PHP code section and returns an array with the following keys:

  • className
  • filePath (path to the parsed PHP file)
  • offset (PHP section offset in the template file)
  • source ('parser', 'request-cache', or 'cache')

public source()

public source(
    Cms\Classes\Page $page,
    Cms\Classes\Layout $layout,
    Cms\Classes\Controller $controller
): mixed 

source runs the object's PHP file and returns the corresponding object.

Protected Methods

protected extractClassFromFile()

protected extractClassFromFile($path): string 

extractClassFromFile extracts the class name from a cache file

protected getCacheFilePath()

protected getCacheFilePath(): string 

getCacheFilePath returns path to the cached parsed file

protected handleCorruptCache()

protected handleCorruptCache($data): void 

handleCorruptCache in some rare cases the cache file will not contain the class name we expect. When this happens, destroy the corrupt file, flush the request cache, and repeat the cycle.

protected static makeClassName()

protected static makeClassName(string $path): string 

makeClassName for the class declared by a cache file. The name follows from the path alone, so a cache file that exists is enough to know it.

protected makeDirectorySafe()

protected makeDirectorySafe($dir): void

makeDirectorySafe makes a directory with concurrency support

protected rebuild()

protected rebuild(string $path): void

rebuild the current file cache.

protected validate()

protected validate($php): void

validate evaluates PHP content in order to detect syntax errors. The method handles PHP errors and throws exceptions.

protected writeContentSafe()

protected writeContentSafe($path, $content): void

writeContentSafe writes content with concurrency support and cache busting This work is based on the Twig\Cache\FilesystemCache class