Hello everyone !

J'ai un soucis avec Git aujourd'hui.

J'ai une librairie A utilisant composer, pushée sur un repo Git.
J'ai une librairie B utilisant elle aussi composer et pushé sur un Git, et je charge la librairie A dans la librairie B via composer.json, comme ceci :

....
"require": {
        "php": ">=5.3.3",
        "monolog/monolog": "1.6.*",
        "lib/libA": "1.0.*"
},
....
 "repositories": 
        {
            "type": "vcs",
            "url": "git@git.monadresse:lib/libA.git"
        }
    ],
....

J'ai fait un composer.phar install, tout est Ok.
J'ai pu utiliser correctement ma libA dans ma libB.

Mais pour une raison, j'ai du modifier le comportement d'une classe dans ma libA.
J'ai ainsi push, mis un autre tag (1.0.1 au lieu de 1.0.0 pour le push d'avant).

J'ai fait un composer update sur ma libB, les modifs de libA sont bien chargées, mais quand je fais un appel à une méthode de la classe de libA que j'ai modifié, j'ai une erreur

Call to a member function getFileName() on a non-object in ...

Quand je regarde le code de ma libA dans /vendor/..., le code correspond bien à mon dernier push, mais quand je fais un print_r de ma classe, le code correspond à un ancien push, comme si j'avais toujours l'ancien code dans vendor.

C'est vraiment très bizarre comme comportement, j'ai essayé d'être le plus clair possible, et si qqun à déjà rencontré ce type d'erreur, ce serait sympa de me dire comment me dépatouiller :)

Merci

1 réponse


Pewel-OutOfNutella
Auteur
Réponse acceptée

Finalement c'était pas un soucis avec composer, c'était un oubli.

Avant de passer sous composer ma libA, je la mettais dans un dossier lib et je la chargeais comme ceci :

require_once( __DIR__. "/../../../lib/libA/libA.php");

En passant à composer, j'ai juste oublié de virer cette ligne, du coup la version de la lib était moisie et pas mise à jour.
Maintenant ça fonctionne :)