Compositore di auto caricamento di Più File in una Cartella

Sto usando compositore nel mio ultimo progetto mappatura e la mia funzione come questa

"require": {
    ...
},
"require-dev": {
    ...
},
"autoload": {
    "psr-4": {
        ...
    },
    "files": [
        "src/function/test-function.php"
    ]
}

Immagino che ci saranno un sacco di file in una cartella di funzione, ex : real-function-1.php, real-function-2.php, etc. Quindi, compositore chiamare tutti i file nella cartella in funzione ? io pigro per usare

"files": [
     "src/function/real-function-1.php",
     "src/function/real-function-2.php",
     ..,
     "src/function/real-function-100.php",
]

C’è pigro come me…

Questo è il lavoro del autoload funzione. Sarà autoload principale “file”, che si sarebbe typicallu includono una serie di richiedere dichiarazioni. Ecco un esempio

OriginaleL’autore Tiara Larasati | 2014-10-03

2 Replies
  1. 17

    Se non è possibile spazio dei nomi di funzioni (perché si rompe un mucchio di codice, o perché non è possibile utilizzare PSR-4), e non si vuole rendere statico classi che contengono le funzioni (che potrebbe poi essere caricate), si potrebbe fare il vostro proprio file di inclusione globale e poi dire compositore di includere.

    compositore.json

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

    include.php

    $files = glob(__DIR__ . '/real-function-*.php');
    if ($files === false) {
        throw new RuntimeException("Failed to glob for function files");
    }
    foreach ($files as $file) {
        require_once $file;
    }
    unset($file);
    unset($files);

    Questo non è l’ideale, poiché caricare ogni file per ogni richiesta, indipendentemente dal fatto o meno che le funzioni abituarsi, ma funziona.

    OriginaleL’autore Austin

  2. 7

    In realtà, c’è un modo migliore per farlo ora, senza alcun codice personalizzato. È possibile utilizzare Compositore classmap funzione se si sta lavorando con le classi. Se si sta lavorando con i singoli file che contengono funzioni, allora si dovrà utilizzare il files[] array.

    {
        "autoload": {
            "classmap": ["src/", "lib/", "Something.php"]
        }
    }

    OriginaleL’autore CommandZ

Lascia un commento