*/
private static $instance;
+ /**
+ * Overrides the default instance of this class
+ * This is intended for use while testing and will fail if MW_PHPUNIT_TEST is not defined.
+ *
+ * If this method is used it MUST also be called with null after a test to ensure a new
+ * default instance is created next time getInstance is called.
+ *
+ * @since 1.27
+ *
+ * @param PageProps|null $store
+ *
+ * @return ScopedCallback to reset the overridden value
+ * @throws MWException
+ */
+ public static function overrideInstance( PageProps $store = null ) {
+ if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
+ throw new MWException(
+ 'Cannot override ' . __CLASS__ . 'default instance in operation.'
+ );
+ }
+ $previousValue = self::$instance;
+ self::$instance = $store;
+ return new ScopedCallback( function() use ( $previousValue ) {
+ self::$instance = $previousValue;
+ } );
+ }
+
/**
* @return PageProps
*/
$this->cache = new ProcessCacheLRU( self::CACHE_SIZE );
}
+ /**
+ * Ensure that cache has at least this size
+ * @param int $size
+ */
+ public function ensureCacheSize( $size ) {
+ if ( $this->cache->getSize() < $size ) {
+ $this->cache->resize( $size );
+ }
+ }
+
/**
* Given one or more Titles and one or more names of properties,
* returns an associative array mapping page ID to property value.
* single Title is provided, it does not need to be passed in an array,
* but an array will always be returned. If a single property name is
* provided, it does not need to be passed in an array. In that case,
- * an associtive array mapping page ID to property value will be
+ * an associative array mapping page ID to property value will be
* returned; otherwise, an associative array mapping page ID to
* an associative array mapping property name to property value will be
* returned. An empty array will be returned if no matching properties