SS_ClassManifest
class SS_ClassManifest (View source)
A utility class which builds a manifest of all classes, interfaces and some additional items present in a directory, and caches it.
It finds the following information:
- Class and interface names and paths.
- All direct and indirect descendants of a class.
- All implementors of an interface.
- All module configuration files.
Constants
CONF_FILE |
|
CONF_DIR |
|
Properties
protected | $base | |||
protected | $tests | |||
protected | $cache | |||
protected | $cacheKey | |||
protected | $classes | |||
protected | $roots | |||
protected | $children | |||
protected | $descendants | |||
protected | $interfaces | |||
protected | $implementors | |||
protected | $configs | |||
protected | $configDirs |
Methods
Create a TokenisedRegularExpression that extracts the namespaces imported with the 'use' keyword
Constructs and initialises a new class manifest, either loading the data from the cache or re-scanning for classes.
Returns the file path to a class or interface if it exists in the manifest.
Returns an array containing all the descendants (direct and indirect) of a class.
Returns a map of lowercased interface names to the classes the implement them.
Returns an array containing the class names that implement a certain interface.
Used to set up files that we want to exclude from parsing for performance reasons.
Find a the full namespaced declaration of a class (or interface) from a list of candidate imports
Return an array of array($alias => $import) from tokenizer's tokens of a PHP file
Recursively coalesces direct child information into full descendant information.
Details
static TokenisedRegularExpression
get_class_parser()
No description
static TokenisedRegularExpression
get_namespaced_class_parser()
No description
static TokenisedRegularExpression
get_namespace_parser()
No description
static TokenisedRegularExpression
get_interface_parser()
No description
static TokenisedRegularExpression
get_imported_namespace_parser()
Create a TokenisedRegularExpression that extracts the namespaces imported with the 'use' keyword
This searches symbols for a use
followed by 1 or more namespaces which are optionally aliased using the as
keyword. The relevant matching tokens are added one-by-one into an array (using save_to
param).
eg: use Namespace\ClassName as Alias, OtherNamespace\ClassName;
__construct(string $base, bool $includeTests = false, bool $forceRegen = false, bool $cache = true)
Constructs and initialises a new class manifest, either loading the data from the cache or re-scanning for classes.
string|null
getItemPath(string $name)
Returns the file path to a class or interface if it exists in the manifest.
array
getClasses()
Returns a map of lowercased class names to file paths.
array
getClassNames()
Returns a lowercase array of all the class names in the manifest.
array
getDescendants()
Returns an array of all the descendant data.
array
getDescendantsOf(string|object $class)
Returns an array containing all the descendants (direct and indirect) of a class.
array
getInterfaces()
Returns a map of lowercased interface names to file locations.
array
getImplementors()
Returns a map of lowercased interface names to the classes the implement them.
array
getImplementorsOf(string $interface)
Returns an array containing the class names that implement a certain interface.
array
getConfigs()
Returns an array of paths to module config files.
array
getModules()
Returns an array of module names mapped to their paths.
"Modules" in SilverStripe are simply directories with a _config.php file.
protected
setDefaults()
Used to set up files that we want to exclude from parsing for performance reasons.
regenerate(bool $cache = true)
Completely regenerates the manifest file.
handleDir($basename, $pathname, $depth)
No description
protected string
findClassOrInterfaceFromCandidateImports(string $class, string $namespace = '', array $imports = array())
Find a the full namespaced declaration of a class (or interface) from a list of candidate imports
This is typically used to determine the full class name in classes that have imported namesapced symbols (having
used the use
keyword)
NB: remember the '\' is an escaped backslash and is interpreted as a single \
protected array
getImportsFromTokens(array $tokens)
Return an array of array($alias => $import) from tokenizer's tokens of a PHP file
NB: If there is no alias we don't set a key to the array
handleFile($basename, $pathname, $depth)
No description
protected array
coalesceDescendants(string $class)
Recursively coalesces direct child information into full descendant information.