Question

Comment charger automatiquement un ensemble de fonctions API de bibliothèque avec une bibliothèque installée par Composer ?

J'ai une bibliothèque avec une API de fonction utilisée pour interfacer les objets internes de la bibliothèque et je souhaite que Composer charge automatiquement l'API et la rende disponible après l'installation sans que le développeur final n'inclue un fichier.

Actuellement, la bibliothèque est chargée en incluant simplement le __init__.php et il comprend les fonctions API et un chargeur automatique si nécessaire.

Merci!

Était-ce utile?

La solution

Composer demandera toujours au développeur final d'inclure un fichier, qui est vendor/autoload.php.Vous ne pouvez pas rendre les choses plus faciles.

Mais ce que vous pouvez faire, c'est inclure __init__.php facultatif car l'intégration de Composer vous permet d'utiliser cet autochargeur à la place.Cela fonctionnera également pour les fonctions qui ne peuvent pas vraiment être chargées automatiquement - Composer propose de toujours inclure un fichier si on le lui demande.

Donc, à la fin, votre configuration Composer de cette bibliothèque API ressemblerait à ceci :

{
    "name": "yourvendorname/yourfancylibraryname",
    "license": "any open source identifier",
    "autoload": {
        "psr-0": {
            "Foo_Api": "src/files"
        },
        "classmap": [
            "extra/folders_with_any_other_class_not_conforming_to_psr0_or_psr4"
        ],
        "files": [
            "functions/file_with_your_function_definitions.php"
        ]
    }
}

Je ne sais pas si vos classes sont conformes au PSR-0 ou même au PSR-4, mais si c'est le cas, vous et tout le monde bénéficieriez si vous pouviez déclarer le chargeur automatique avec ces normes.Sinon:Classmap vous aidera.

La définition de votre fonction sera chargée par le ou les fichiers mentionnés dans "fichiers".

Vous n'avez plus besoin de votre propre chargeur automatique pour Composer.

Bien sûr, vous pouvez aussi simplement mentionner l'ancien __init__.php comme fichier à inclure dans "files", mais cela séparerait votre bibliothèque de toutes les autres classes, serait probablement moins performant (Composer a déjà un très bon chargeur automatique - il n'est pas nécessaire d'en avoir deux) et serait certainement empêchez toutes vos classes d'être transférées dans un chargeur automatique de cartes de classes Composer encore plus rapide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top