wake-up-neo.net

Composer/PSR - Wie werden Funktionen automatisch geladen?

Wie kann ich Hilfsfunktionen (außerhalb einer Klasse) automatisch laden? Kann ich in composer.json eine Art Bootstrap-Datei angeben, die zuerst geladen werden soll?

30
mpen

Sie können bestimmte Dateien automatisch laden , indem Sie Ihre composer.json-Datei folgendermaßen bearbeiten:

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

(Danke Kint )

57
mpen

Nach einigen Tests bin ich zu dem Schluss gekommen, dass das Hinzufügen eines Namespaces zu einer Datei, die Funktionen enthält, und das Einrichten von Composer zum automatischen Laden dieser Datei diese Funktion nicht in alle Dateien zu laden scheint, für die der Autoload-Pfad erforderlich ist. 

Um zu synthetisieren, wird die Funktion automatisch überall geladen:

composer.json

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

src/grüße.php

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

...

Dies lädt Ihre Funktion jedoch nicht bei jedem automatischen Ladevorgang:

composer.json

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

src/grüße.php

<?php
    namespace You;

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

Und Sie würden Ihre Funktion mit use function ...; wie folgt aufrufen:

Beispiel/Beispiel-1.php

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

    use function You\greetings;

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