private static $list;
private static $aliases;
+ private static $pageObjectCache = [];
/**
* Reset the internal list of special pages. Useful when changing $wgSpecialPages after
public static function resetList() {
self::$list = null;
self::$aliases = null;
+ self::$pageObjectCache = [];
}
/**
public static function getPage( $name ) {
list( $realName, /*...*/ ) = self::resolveAlias( $name );
+ if ( isset( self::$pageObjectCache[$realName] ) ) {
+ return self::$pageObjectCache[$realName];
+ }
+
$specialPageList = self::getPageList();
if ( isset( $specialPageList[$realName] ) ) {
$page = null;
}
+ self::$pageObjectCache[$realName] = $page;
if ( $page instanceof SpecialPage ) {
return $page;
} else {
$specialPageTestHelper = new SpecialPageTestHelper();
return [
- 'class name' => [ 'SpecialAllPages', false ],
+ 'class name' => [ 'SpecialAllPages' ],
'closure' => [ function () {
return new SpecialAllPages();
- }, false ],
- 'function' => [ [ $this, 'newSpecialAllPages' ], false ],
- 'callback string' => [ 'SpecialPageTestHelper::newSpecialAllPages', false ],
+ } ],
+ 'function' => [ [ $this, 'newSpecialAllPages' ] ],
+ 'callback string' => [ 'SpecialPageTestHelper::newSpecialAllPages' ],
'callback with object' => [
- [ $specialPageTestHelper, 'newSpecialAllPages' ],
- false
+ [ $specialPageTestHelper, 'newSpecialAllPages' ]
],
'callback array' => [
- [ 'SpecialPageTestHelper', 'newSpecialAllPages' ],
- false
+ [ 'SpecialPageTestHelper', 'newSpecialAllPages' ]
]
];
}
* @covers SpecialPageFactory::getPage
* @dataProvider specialPageProvider
*/
- public function testGetPage( $spec, $shouldReuseInstance ) {
+ public function testGetPage( $spec ) {
$this->mergeMwGlobalArrayValue( 'wgSpecialPages', [ 'testdummy' => $spec ] );
SpecialPageFactory::resetList();
$this->assertInstanceOf( 'SpecialPage', $page );
$page2 = SpecialPageFactory::getPage( 'testdummy' );
- $this->assertEquals( $shouldReuseInstance, $page2 === $page, "Should re-use instance:" );
+ $this->assertEquals( true, $page2 === $page, "Should re-use instance:" );
}
/**