Manual:Extension registration/fr

L’enregistrement d’extensions se réfère au nouveau système de chargement des extensions et habillages introduit dans MediaWiki 1.25 à la suite d’une RFC.

Plutôt que d’inclure les métadonnées à propos des extensions dans des fichiers PHP qui dépendent de la porté, de l’état global et de l’ordre de chargement, celles-ci sont enregistrées dans un fichier nommé extension.json ou skin.json dans chaque extension et skin. La nouvelle classe  traite ces fichiers.

Utilisation
Auparavant, votre fichier LocalSettings.php aurait inclus quelque chose comme :

Cela peut être converti en :

If you keep your extensions in a location different from $IP/extensions, you need to override $wgExtensionDirectory. If your skins are not in $IP/skins you need to override the poorly named $wgStyleDirectory. This must be done before you load any extensions or skins.

Migrer, pour les développeurs d’extensions
Le script maintenance/convertExtensionToRegistration.php vous aide à migrer vos points d’entrée PHP en un fichier de métadonnées JSON. Si votre extension supporte d’anciennes versions de MediaWiki, vous pouvez garder votre point d’entrée PHP FooBar/FooBar.php</tt> jusqu’à ce que vous retiriez le support pour ces anciennes versions.

Exemples de ligne de commande :

Vous pourriez avoir besoin de désinstaller votre extension dans LocalSettings.php si vous avez des erreurs disant que des fonctions ou des constantes ne peuvent pas être redéfinies. Vous devriez remplacer votre fichier de point d’entrée PHP (FooBar.php) en quelque chose qui ne casse pas les wikis durant le processus de mise à jour. Si vous avez besoin de garder la compatibilité pre-1.25, retirez la ligne die et conservez l’ancienne configuration en PHP.

Or skins

Fonctionnalités
Si vous chargez un grand nombre d’extensions, l’enregistrement d’extensions permettra un gain de performance si vous avez installé APC (ou APCu). Les extensions qui sont chargées ensemble avec  seront cachées ensemble.

Attributs
Un problème récurrent est la façon « d’enregistrer » quelque chose avec une extension. En général, cela signifie que vous avez à charger une extension avant une autre. Par exemple, l’éditeur visuel a  qui permet aux extensions d’ajouter leurs modules. Ainsi, dans le point d’entrée de l’éditeur visuel, il y a :

Cela signifie que si une extension ajoute quelque chose au tableau avant que l’éditeur visuel soit chargé, celui-ci effacera l’entrée dans ce tableau. Quelques extensions dépendent d’un ordre de chargement spécifique, d’autres bricolent quelque chose avec. L’enregistrement d’extensions résoud ce problème avec les « attributs ». Dans l’extension Math, son extension.json</tt> aurait quelque chose comme :

Quand l’éditeur visuel veut accéder à cet attribut, il utilise :

Personnaliser l’enregistrement
Quelques fois, les extensions ont besoin de faire des choses non-standard au cours de l’enregistrement ou font des choses très complexes. Il y a deux fonctionnalités qui peuvent être utilisées dans de tels cas :


 * callbacks

Vous pouvez spécifier une clé 'callback' dans votre extension.json</tt> si vous avez besoin d’exécuter du code PHP. La valeur devrait pouvoir être appelé en PHP, comme. exécutera ce callback après qu’il ait traité le fichier extension.json</tt>.


 * Processeurs personnalisés

Par défaut, toutes les extensions utilisent l’implémentation  de l’interface. Cela peut être remplacé en spécifiant une clé  positionnée à un nom de classe. Il est recommandé que les processeurs personnalisés complètent ExtensionProcessor, et il est obligatoire qu’ils implémentent l’interface Processor.

Et composer.json
Si une extension ou un skin a des dépendances de bibliothèques, il peut y avoir également un fichier composer.json</tt>, voir les bonnes pratiques pour composer.json. Quelques champs de métadonnées sont les mêmes (discussion dans T89456), dont :
 * et
 * et

Voir aussi

 * Rapportez les bugs dans le projet MediaWiki-Configuration.
 * Manual:Developing extensions et décrivent l’ancienne approche de déclaration des informations des extensions dans les variables et le code PHP