MDL-66903 core: Introduce \core_component::reset to replace hacks

Traditionally we have done this using reflection and it would be better
to do this in a 'proper' fashion in case we ever need to change how it
works.
This commit is contained in:
Andrew Nicols
2024-07-15 12:22:19 +08:00
parent 39d46917bb
commit d36cf65ef3
3 changed files with 16 additions and 6 deletions
+2 -3
View File
@@ -38,8 +38,7 @@ final class component_test extends advanced_testcase {
public function tearDown(): void {
parent::tearDown();
$plugintypes = new ReflectionProperty(\core_component::class, 'plugintypes');
$plugintypes->setValue(null, null);
\core_component::reset();
}
public function test_get_core_subsystems(): void {
@@ -959,7 +958,7 @@ final class component_test extends advanced_testcase {
// We have to override the dirroot and libdir, and then reset the plugintypes property.
$CFG->dirroot = $vfileroot->url();
$CFG->libdir = $vfileroot->url() . '/lib';
(new ReflectionProperty('core_component', 'plugintypes'))->setValue(null, null);
\core_component::reset();
// Existing classes do not break.
$this->assertTrue(