Jump to content

ObjectFactory

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

ObjectFactory crée des objets à partir de spécifications (via $objectFactory->createObject() ou ObjectFactory::getObjectFromSpec()). Ce format est utilisé par certains paramètres de configuration (tels que $wgMWLoggerDefaultSpi ou $wgSessionProviders ). Une spécification typique ressemble à ceci :

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

qui est la spécification de new Message( 'unexpected', [ 'foo', 123 ] ).

Les autres options comprennent :

$spec = [
    'factory' => 'Message::newFallbackSequence',
    'args' => [ 'unexpected', 'unexpected2' ],
];
// Message::newFallbackSequence( 'unexpected', 'unexpected2' )
$spec = [
    'class' => 'Message',
    'args' => [ 'foo', 'bar' ],
    'calls' => [ 'inLanguage' => [ 'en' ], 'useDatabase' => [ false ] ],
];
// va appeler $message->inLanguage( 'en' ), $message->useDatabase( false ) après avoir créé $message
Version de MediaWiki :
1.34

A partir de MediaWiki 1.34 , ObjectFactory prend en charge la création des classes avec les services référencés dans les spécifications. Pour utiliser ObjectFactory afin de créer les classes qui ont besoin de services, vous devez utiliser le service ObjectFactory et appeler la méthode createObject.

Pour les besoins non MediaWiki, une instance ObjectFactory peut être créée avec une interface conteneur PSR-11 qui sera utilisée pour récupérer les services.

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

Liens externes