web-dev-qa-db-fra.com

Compositeur/PSR - Comment charger automatiquement des fonctions?

Comment puis-je charger automatiquement des fonctions d'assistance (en dehors de toute classe)? Puis-je spécifier dans composer.json un type de fichier d'amorçage à charger en premier?

30
mpen

Vous pouvez charger automatiquement des fichiers spécifiques en modifiant votre fichier composer.json comme ceci:

"autoload": {
    "files": ["src/helpers.php"]
}

(merci Kint )

57
mpen

Après quelques tests, je suis arrivé à la conclusion que l'ajout d'un espace de nom à un fichier contenant des fonctions et la configuration de composer pour charger automatiquement ce fichier ne semblent pas charger cette fonction dans tous les fichiers nécessitant le chemin de chargement automatique. 

Pour synthétiser, ceci chargera automatiquement votre fonction partout:

composer.json

"autoload": {
    "files": [
        "src/greetings.php"
    ]
}

src/greetings.php

<?php
    if( ! function_exists('greetings') ) {
        function greetings(string $firstname): string {
            return "Howdy $firstname!";
        }
    }
?>

...

Mais cela ne chargera pas votre fonction dans tous les cas de chargement automatique:

composer.json

"autoload": {
    "files": [
        "src/greetings.php"
    ]
}

src/greetings.php

<?php
    namespace You;

    if( ! function_exists('greetings') ) {
        function greetings(string $firstname): string {
            return "Howdy $firstname!";
        }
    }
?>

Et vous appelleriez votre fonction en utilisant use function ...; comme suit:

exemple/exemple-1.php

<?php
    require( __DIR__ . '/../vendor/autoload.php' );

    use function You\greetings;

    greetings('Mark'); // "Howdy Mark!"
?>
0
Anwar