Jump to content

ObjectFactory/nl

From mediawiki.org
This page is a translated version of the page ObjectFactory and the translation is 100% complete.

ObjectFactory maakt objecten aan uit specificatie (via $objectFactory->createObject() of ObjectFactory::getObjectFromSpec()). Dit formaat wordt gebruikt door bepaalde configuratie-instellingen (zoals $wgMWLoggerDefaultSpi en $wgSessionProviders ). Een specificatie ziet er ongeveer zo uit:

$spec = [
    'class' => 'Message',
    'args' => [ 'unexpected', [ 'foo', 123 ] ],
];

wat de specificatie is voor new Message( 'unexpected', [ 'foo', 123 ] ).

Andere opties bevatten:

$spec = [
    'factory' => 'Message::newFallbackSequence',
    'args' => [ 'unexpected', 'unexpected2' ],
];
// Message::newFallbackSequence( 'unexpected', 'unexpected2' )
$spec = [
    'class' => 'Message',
    'args' => [ 'foo', 'bar' ],
    'calls' => [ 'inLanguage' => [ 'en' ], 'useDatabase' => [ false ] ],
];
// roept $message->inLanguage( 'en' ), $message->useDatabase( false ) aan, na het aanmaken van $message
MediaWiki-versie:
1.34

Vanaf MediaWiki 1.34 ondersteunt ObjectFactory nu ook het aanmaken van classes met services die in de specificatie gespecificeerd zijn. Om ObjectFactory te gebruiken om classes aan te maken die services nodig hebben, dient u de ObjectFactory service te gebruiken en dan de methode createObject aan te roepen.

Voor gebruik buiten MediaWiki kan er een instantie van ObjectFactory worden aangemaakt met een PSR-11 Container interface die gebruikt zal worden om de services op te halen.

$spec = [
    'class' => 'MyClass',
    'args' => [ 'foo', 'bar' ],
    'services' => [ 'Service1', 'Service2' ],
];
// $services = \MediaWiki\MediaWikiServices::getInstance();
// new MyClass( $services->get( 'Service1' ), $services->get( 'Service2' ), 'foo', 'bar' )