Domanda

Come posso Autoload un insieme di funzioni API della libreria con una libreria installata compositore?

Ho una biblioteca con un'API di funzione utilizzata per interfacciare gli oggetti interni delle librerie e desidera che il compositore per caricare automaticamente l'API e renderlo disponibile dopo l'installazione senza richiedere che lo sviluppatore finale includa un file.

Attualmente la biblioteca è caricata semplicemente inclusa il __init__.php e include le funzioni API e un Autoloader, se necessario.

Grazie!

È stato utile?

Soluzione

Compositore richiederà sempre che lo sviluppatore finale di includere un file, che è vendor/autoload.php. Non puoi renderlo più facile.

Ma ciò che puoi fare è fare è includere __init__.php opzionale perché l'integrazione del compositore consente di utilizzare il caricatore automatico. Ciò funzionerà anche per le funzioni, che non poteva davvero essere automaticamente effettuato - le offerte compositori includono sempre un file se viene detto.

Quindi alla fine la configurazione del compositore di quella libreria API sarebbe simile a questa:

{
    "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"
        ]
    }
}
.

Non so se le tue lezioni sono conformi a PSR-0 o addirittura PSR-4, ma se lo fanno, tu e tutti beneficeranno se è possibile dichiarare il caricatore automatico con questi standard. In caso contrario: ClassMap ti aiuterà.

La definizione della funzione verrà caricata dal file o dai file menzionati in "file".

Non hai più bisogno del tuo AutoLoader per il compositore.

certo che potresti anche menzionare semplicemente il vecchio __init__.php come il file da includere in "file", ma questo separerebbe la tua libreria da tutte le altre classi, sarebbe probabilmente meno performanti (compositore ha già un ottimo caroader - Non c'è bisogno di avere due di loro) e escluderebbero sicuramente tutte le tue classi dall'essere scaricate in un Autoloader di ClassMap compositore ancora più veloce.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top