MediaWiki REL1_37
ExtensionRegistry Class Reference

The Registry loads JSON files, and uses a Processor to extract information from them. More...

Collaboration diagram for ExtensionRegistry:

Public Member Functions

 clearQueue ()
 Clear the current load queue.
 
 finish ()
 After this is called, no more extensions can be loaded.
 
 getAllThings ()
 Get credits information about all installed extensions and skins.
 
 getAttribute ( $name)
 
 getQueue ()
 Get the current load queue.
 
 isLoaded ( $name, $constraint=' *')
 Whether a thing has been loaded.
 
 loadFromQueue ()
 
 queue ( $path)
 
 readFromQueue (array $queue)
 Process a queue of extensions and return their extracted data.
 
 setAttributeForTest ( $name, array $value)
 Force override the value of an attribute during tests.
 
 setCheckDevRequires ( $check)
 
 setLoadTestClassesAndNamespaces ( $load)
 Controls if classes and namespaces defined under the keys TestAutoloadClasses and TestAutoloadNamespaces should be added to the autoloader.
 

Static Public Member Functions

static exportAutoloadClassesAndNamespaces ( $dir, $info, &$autoloadClasses=[], &$autoloadNamespaces=[])
 Export autoload classes and namespaces for a given directory and parsed JSON info file.
 
static exportTestAutoloadClassesAndNamespaces ( $dir, $info, &$autoloadClasses=[], &$autoloadNamespaces=[])
 Export test autoload classes and namespaces for a given directory and parsed JSON info file.
 
static getInstance ()
 

Public Attributes

const MANIFEST_VERSION = 2
 Version of the highest supported manifest version Note: Update MANIFEST_VERSION_MW_VERSION when changing this.
 
const MANIFEST_VERSION_MW_VERSION = '>= 1.29.0'
 MediaWiki version constraint representing what the current highest MANIFEST_VERSION is supported in.
 
const MEDIAWIKI_CORE = 'MediaWiki'
 "requires" key that applies to MediaWiki core
 
const MERGE_STRATEGY = '_merge_strategy'
 Special key that defines the merge strategy.
 
const OLDEST_MANIFEST_VERSION = 1
 Version of the oldest supported manifest version.
 

Protected Member Functions

 exportExtractedData (array $info)
 
 getLazyLoadedAttribute ( $name)
 Get an attribute value that isn't cached by reading each extension.json file again.
 
 saveToCache (BagOStuff $cache, array $data)
 Save data in the cache.
 

Static Protected Member Functions

static processAutoLoader ( $dir, array $files)
 Fully expand autoloader paths.
 

Protected Attributes

array $attributes = []
 Items in the JSON file that aren't being set as globals.
 
bool $checkDev = false
 Whether to check dev-requires.
 
array $lazyAttributes = []
 Lazy-loaded attributes.
 
bool $loadTestClassesAndNamespaces = false
 Whether test classes and namespaces should be added to the auto loader.
 
int[] $queued = []
 List of paths that should be loaded.
 
array $testAttributes = []
 Attributes for testing.
 

Private Member Functions

 buildVersionChecker ()
 Queries information about the software environment and constructs an appropiate version checker.
 
 getAbilities ()
 Get the list of abilities and their values.
 
 getCache ()
 
 getVaryHash ()
 Get the cache varying hash.
 
 invalidateProcessCache ()
 Invalidate the cache of the vary hash and the lazy options.
 
 makeCacheKey (BagOStuff $cache, $component,... $extra)
 

Private Attributes

bool $finished = false
 Whether we are done loading things.
 
array[] $loaded = []
 Array of loaded things, keyed by name, values are credits information.
 
string null $varyHash
 The hash of cache-varying options, lazy-initialised.
 
const CACHE_EXPIRY = 60 * 60 * 24
 
const CACHE_VERSION = 7
 Bump whenever the registration cache needs resetting.
 
const LAZY_LOADED_ATTRIBUTES
 Attributes that should be lazy-loaded.
 

Static Private Attributes

static ExtensionRegistry $instance
 

Detailed Description

The Registry loads JSON files, and uses a Processor to extract information from them.

It also registers classes with the autoloader.

Since
1.25

Definition at line 15 of file ExtensionRegistry.php.

Member Function Documentation

◆ buildVersionChecker()

ExtensionRegistry::buildVersionChecker ( )
private

Queries information about the software environment and constructs an appropiate version checker.

Returns
VersionChecker

Definition at line 335 of file ExtensionRegistry.php.

References MW_VERSION.

◆ clearQueue()

ExtensionRegistry::clearQueue ( )

Clear the current load queue.

Not intended to be used outside of the installer.

Definition at line 306 of file ExtensionRegistry.php.

◆ exportAutoloadClassesAndNamespaces()

static ExtensionRegistry::exportAutoloadClassesAndNamespaces (   $dir,
  $info,
$autoloadClasses = [],
$autoloadNamespaces = [] 
)
static

Export autoload classes and namespaces for a given directory and parsed JSON info file.

Parameters
string$dir
array$info
array&$autoloadClasses
array&$autoloadNamespaces

Definition at line 450 of file ExtensionRegistry.php.

References AutoLoader\$psr4Namespaces.

◆ exportExtractedData()

ExtensionRegistry::exportExtractedData ( array  $info)
protected

Definition at line 487 of file ExtensionRegistry.php.

References $path, AutoLoader\$psr4Namespaces, and wfArrayPlus2d().

◆ exportTestAutoloadClassesAndNamespaces()

static ExtensionRegistry::exportTestAutoloadClassesAndNamespaces (   $dir,
  $info,
$autoloadClasses = [],
$autoloadNamespaces = [] 
)
static

Export test autoload classes and namespaces for a given directory and parsed JSON info file.

Since
1.35
Parameters
string$dir
array$info
array&$autoloadClasses
array&$autoloadNamespaces

Definition at line 473 of file ExtensionRegistry.php.

References AutoLoader\$psr4Namespaces.

◆ finish()

ExtensionRegistry::finish ( )

After this is called, no more extensions can be loaded.

Since
1.29

Definition at line 316 of file ExtensionRegistry.php.

◆ getAbilities()

ExtensionRegistry::getAbilities ( )
private

Get the list of abilities and their values.

Returns
bool[]

Definition at line 324 of file ExtensionRegistry.php.

◆ getAllThings()

ExtensionRegistry::getAllThings ( )

Get credits information about all installed extensions and skins.

Returns
array[] Keyed by component name.

Definition at line 683 of file ExtensionRegistry.php.

◆ getAttribute()

ExtensionRegistry::getAttribute (   $name)
Parameters
string$name
Returns
array

Definition at line 605 of file ExtensionRegistry.php.

◆ getCache()

ExtensionRegistry::getCache ( )
private

Definition at line 190 of file ExtensionRegistry.php.

◆ getInstance()

static ExtensionRegistry::getInstance ( )
static
Returns
ExtensionRegistry

Definition at line 141 of file ExtensionRegistry.php.

◆ getLazyLoadedAttribute()

ExtensionRegistry::getLazyLoadedAttribute (   $name)
protected

Get an attribute value that isn't cached by reading each extension.json file again.

Parameters
string$name
Returns
array

Definition at line 623 of file ExtensionRegistry.php.

References $cache.

◆ getQueue()

ExtensionRegistry::getQueue ( )

Get the current load queue.

Not intended to be used outside of the installer.

Returns
int[] Map of extension.json files' modification timestamps keyed by absolute path

Definition at line 298 of file ExtensionRegistry.php.

◆ getVaryHash()

ExtensionRegistry::getVaryHash ( )
private

Get the cache varying hash.

Returns
string

Definition at line 210 of file ExtensionRegistry.php.

References MW_VERSION.

◆ invalidateProcessCache()

ExtensionRegistry::invalidateProcessCache ( )
private

Invalidate the cache of the vary hash and the lazy options.

Definition at line 229 of file ExtensionRegistry.php.

Referenced by queue(), and setCheckDevRequires().

◆ isLoaded()

ExtensionRegistry::isLoaded (   $name,
  $constraint = '*' 
)

Whether a thing has been loaded.

Parameters
string$name
string$constraintThe required version constraint for this dependency
Exceptions
LogicExceptionif a specific contraint is asked for, but the extension isn't versioned
Returns
bool

Definition at line 586 of file ExtensionRegistry.php.

◆ loadFromQueue()

ExtensionRegistry::loadFromQueue ( )
Exceptions
MWExceptionIf the queue is already marked as finished (no further things should be loaded then).

Definition at line 238 of file ExtensionRegistry.php.

References $cache.

◆ makeCacheKey()

ExtensionRegistry::makeCacheKey ( BagOStuff  $cache,
  $component,
  $extra 
)
private

Definition at line 196 of file ExtensionRegistry.php.

References $cache.

◆ processAutoLoader()

static ExtensionRegistry::processAutoLoader (   $dir,
array  $files 
)
staticprotected

Fully expand autoloader paths.

Parameters
string$dir
string[]$files
Returns
array

Definition at line 694 of file ExtensionRegistry.php.

References $file.

◆ queue()

ExtensionRegistry::queue (   $path)
Parameters
string$pathAbsolute path to the JSON file

Definition at line 172 of file ExtensionRegistry.php.

References $path, $wgExtensionInfoMTime, and invalidateProcessCache().

◆ readFromQueue()

ExtensionRegistry::readFromQueue ( array  $queue)

Process a queue of extensions and return their extracted data.

Parameters
int[]$queuekeys are filenames, values are ignored
Returns
array extracted info
Exceptions
Exception
ExtensionDependencyError

Definition at line 359 of file ExtensionRegistry.php.

References $path, $queue, and wfDeprecatedMsg().

◆ saveToCache()

ExtensionRegistry::saveToCache ( BagOStuff  $cache,
array  $data 
)
protected

Save data in the cache.

Parameters
BagOStuff$cache
array$data

Definition at line 267 of file ExtensionRegistry.php.

References $cache, and $wgDevelopmentWarnings.

◆ setAttributeForTest()

ExtensionRegistry::setAttributeForTest (   $name,
array  $value 
)

Force override the value of an attribute during tests.

Parameters
string$nameName of attribute to override
array$valueValue to set
Returns
ScopedCallback to reset
Since
1.33

Definition at line 663 of file ExtensionRegistry.php.

◆ setCheckDevRequires()

ExtensionRegistry::setCheckDevRequires (   $check)
Since
1.34
Parameters
bool$check

Definition at line 153 of file ExtensionRegistry.php.

References invalidateProcessCache().

◆ setLoadTestClassesAndNamespaces()

ExtensionRegistry::setLoadTestClassesAndNamespaces (   $load)

Controls if classes and namespaces defined under the keys TestAutoloadClasses and TestAutoloadNamespaces should be added to the autoloader.

Since
1.35
Parameters
bool$load

Definition at line 165 of file ExtensionRegistry.php.

Member Data Documentation

◆ $attributes

array ExtensionRegistry::$attributes = []
protected

Items in the JSON file that aren't being set as globals.

Definition at line 95 of file ExtensionRegistry.php.

◆ $checkDev

bool ExtensionRegistry::$checkDev = false
protected

Whether to check dev-requires.

Definition at line 123 of file ExtensionRegistry.php.

◆ $finished

bool ExtensionRegistry::$finished = false
private

Whether we are done loading things.

Definition at line 87 of file ExtensionRegistry.php.

◆ $instance

ExtensionRegistry ExtensionRegistry::$instance
staticprivate

Definition at line 135 of file ExtensionRegistry.php.

◆ $lazyAttributes

array ExtensionRegistry::$lazyAttributes = []
protected

Lazy-loaded attributes.

Definition at line 109 of file ExtensionRegistry.php.

◆ $loaded

array [] ExtensionRegistry::$loaded = []
private

Array of loaded things, keyed by name, values are credits information.

The keys that the credit info arrays may have is defined by ExtensionProcessor::CREDIT_ATTRIBS (plus a 'path' key that points to the skin or extension JSON file).

This info may be accessed via ExtensionRegistry::getAllThings.

Definition at line 73 of file ExtensionRegistry.php.

◆ $loadTestClassesAndNamespaces

bool ExtensionRegistry::$loadTestClassesAndNamespaces = false
protected

Whether test classes and namespaces should be added to the auto loader.

Definition at line 130 of file ExtensionRegistry.php.

◆ $queued

int [] ExtensionRegistry::$queued = []
protected

List of paths that should be loaded.

Definition at line 80 of file ExtensionRegistry.php.

◆ $testAttributes

array ExtensionRegistry::$testAttributes = []
protected

Attributes for testing.

Definition at line 102 of file ExtensionRegistry.php.

◆ $varyHash

string null ExtensionRegistry::$varyHash
private

The hash of cache-varying options, lazy-initialised.

Definition at line 116 of file ExtensionRegistry.php.

◆ CACHE_EXPIRY

const ExtensionRegistry::CACHE_EXPIRY = 60 * 60 * 24
private

Definition at line 44 of file ExtensionRegistry.php.

◆ CACHE_VERSION

const ExtensionRegistry::CACHE_VERSION = 7
private

Bump whenever the registration cache needs resetting.

Definition at line 42 of file ExtensionRegistry.php.

◆ LAZY_LOADED_ATTRIBUTES

const ExtensionRegistry::LAZY_LOADED_ATTRIBUTES
private
Initial value:
= [
'TrackingCategories',
'QUnitTestModules',
'SkinLessImportPaths',
]

Attributes that should be lazy-loaded.

Definition at line 56 of file ExtensionRegistry.php.

◆ MANIFEST_VERSION

const ExtensionRegistry::MANIFEST_VERSION = 2

Version of the highest supported manifest version Note: Update MANIFEST_VERSION_MW_VERSION when changing this.

Definition at line 26 of file ExtensionRegistry.php.

◆ MANIFEST_VERSION_MW_VERSION

const ExtensionRegistry::MANIFEST_VERSION_MW_VERSION = '>= 1.29.0'

MediaWiki version constraint representing what the current highest MANIFEST_VERSION is supported in.

Definition at line 32 of file ExtensionRegistry.php.

◆ MEDIAWIKI_CORE

const ExtensionRegistry::MEDIAWIKI_CORE = 'MediaWiki'

"requires" key that applies to MediaWiki core

Definition at line 20 of file ExtensionRegistry.php.

◆ MERGE_STRATEGY

const ExtensionRegistry::MERGE_STRATEGY = '_merge_strategy'

Special key that defines the merge strategy.

Since
1.26

Definition at line 51 of file ExtensionRegistry.php.

◆ OLDEST_MANIFEST_VERSION

const ExtensionRegistry::OLDEST_MANIFEST_VERSION = 1

Version of the oldest supported manifest version.

Definition at line 37 of file ExtensionRegistry.php.


The documentation for this class was generated from the following file: