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