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. If your skins are not in $IP/skins you need to override the poorly named. This must be done before you load any extensions or skins.

or if you want to do it within one line:

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 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

Retaining documentation
PHP entry points usually have some documentation of configuration settings that is useful and shouldn't be lost, and unfortunately JSON doesn't support comments. Any key that starts with a " @ " in the top level structure or under " config " will be ignored and can be used for documenting. Additionally, configuration documentation should be kept on-wiki or in a README file in the extension repository.

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 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
If an extension or skin has library dependencies, it may have a composer.json</tt> file as well, see Manual:Composer.json best practices. Some metadata fields in these files overlap (discussed in T89456), including
 * and
 * and

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
 * Known limitations