Composer: Chargement automatique des fichiers - chargez d'abord les fournisseurs

Créé le 30 juil. 2012  ·  11Commentaires  ·  Source: composer/composer

J'utilise le chargement automatique avec un chargeur de fichiers personnalisé. Et j'ai un problème car mon chargeur dépend de certaines classes des fournisseurs. Mais le compositeur a besoin de mon chargeur avant le chargeur du fournisseur.

Voici généré autoloader.php :

<?php

// autoload.php generated by Composer
if (!class_exists('Composer\\Autoload\\ClassLoader', false)) {
    require __DIR__ . '/composer' . '/ClassLoader.php';
}

return call_user_func(function() {
    $loader = new \Composer\Autoload\ClassLoader();
    $composerDir = __DIR__ . '/composer';

    $map = require $composerDir . '/autoload_namespaces.php';
    foreach ($map as $namespace => $path) {
        $loader->add($namespace, $path);
    }

    $classMap = require $composerDir . '/autoload_classmap.php';
    if ($classMap) {
        $loader->addClassMap($classMap);
    }

    $loader->register();

    require $baseDir . '/Nella/loader.php'; // <-- my libs
    require $vendorDir . '/nette/nette/Nette/loader.php'; // <-- vendor libs

    return $loader;
});

J'ai besoin de charger _Nette_ avant mes bibliothèques (_Nella_) car mon chargeur (_Nella_) nécessite certaines classes de _Nette_.

Bug

Commentaire le plus utile

Ce serait bien de pouvoir définir la commande. Ou encore mieux: vous disposez d'une option supplémentaire pour définir les fichiers qui doivent être chargés en premier.

Cas d'utilisation: essayer de remplacer les fonctions d'assistance de laravel car elles sont spécifiquement définies dans cet esprit, mais il n'y a aucun moyen de dire au compositeur que ma définition doit venir avant celle native de laravel.

Contexte: https://laracasts.com/index.php/discuss/channels/general-discussion/override-functions-in-supporthelpersphp

Solution de contournement: https://github.com/funkjedi/composer-include-files

Tous les 11 commentaires

@Seldaek Je suppose que l'ordre ici doit respecter l'ordre trouvé lors de la résolution des dépendances, de sorte que le fichier de chargement automatique d'une dépendance soit chargé avant le fichier d'un package qui en dépend.

Oui, cela a du sens, je ne sais pas à quel point c'est facile à réaliser, mais après la première manche, je pense que c'est assez aléatoire.

Je ne suis pas tout à fait sûr de comprendre cela? Tous les chargeurs automatiques seront nécessaires, puis l'ordre ne devrait pas avoir d'importance?

Edit: tant pis je comprends :)

Le solveur devrait déjà les renvoyer dans le bon ordre dans la transaction, y compris le cas où les packages sont déjà installés, donc ne savez pas pourquoi l'ordre serait incorrect.

Je viens de rencontrer le même problème avec kdyby/forms-replicator

{
    "name":"kdyby/forms-replicator",
    "require":{
        "php":">=5.3.2",
        "nette/nette":"*"
    },
    "autoload":{
        "files":["Replicator.php"]
    }
}

L'ordre de require dans autoload_real.php doit correspondre à la manière dont les packages se nécessitent.

Correction de la @HosipLan .

Comment marquer que notre bibliothèque doit être chargée en premier?
Je veux dire, cela ne dépend pas des autres, mais il doit être chargé avant tout autre chargement.

J'ai la même question que @onlyongunz - J'ai installé globalement apigen/apigen et symfony/var-dumper , mais quand j'utilise la version dump() partir de tracy/tracy (requis par ApiGen) est appelé. Je souhaite utiliser la version de VarDumper.

Ce serait bien de pouvoir définir la commande. Ou encore mieux: vous disposez d'une option supplémentaire pour définir les fichiers qui doivent être chargés en premier.

Cas d'utilisation: essayer de remplacer les fonctions d'assistance de laravel car elles sont spécifiquement définies dans cet esprit, mais il n'y a aucun moyen de dire au compositeur que ma définition doit venir avant celle native de laravel.

Contexte: https://laracasts.com/index.php/discuss/channels/general-discussion/override-functions-in-supporthelpersphp

Solution de contournement: https://github.com/funkjedi/composer-include-files

Eh bien, je pense que je vais suggérer load_first de prioriser le paquet lors du chargement quand il ne dépendait pas d'une autre liblary (sauf si c'est php ou autre chose), et ajouter --ignore-order pour ignorer le load_first .

Cette page vous a été utile?
0 / 5 - 0 notes