MDL-64284 core: improved performance of component class searching

Added static caching of classes to reduce load times and reduce calls to `get_component_classes`
by altering to accept a null component value to search classmap only once.
This commit is contained in:
Tom Dickman
2019-03-29 11:44:43 +11:00
parent 0920f35ed9
commit 0d6a45d2fe
4 changed files with 54 additions and 82 deletions
+1 -16
View File
@@ -650,22 +650,7 @@ class manager {
// Just in case...
$element = clean_param($element, PARAM_ALPHANUMEXT);
// Core analytics classes (analytics subsystem should not contain uses of the analytics API).
$classes = \core_component::get_component_classes_in_namespace('core', 'analytics\\' . $element);
// Plugins.
foreach (\core_component::get_plugin_types() as $type => $unusedplugintypepath) {
foreach (\core_component::get_plugin_list($type) as $pluginname => $unusedpluginpath) {
$frankenstyle = $type . '_' . $pluginname;
$classes += \core_component::get_component_classes_in_namespace($frankenstyle, 'analytics\\' . $element);
}
}
// Core subsystems.
foreach (\core_component::get_core_subsystems() as $subsystemname => $unusedsubsystempath) {
$componentname = 'core_' . $subsystemname;
$classes += \core_component::get_component_classes_in_namespace($componentname, 'analytics\\' . $element);
}
$classes = \core_component::get_component_classes_in_namespace(null, 'analytics\\' . $element);
return $classes;
}