Ik probeer eigen classes d.m.v. composer te autoloaden. Hiervoor heb ik een directory genaamd app/custom/myclass.php in de class heb ik de volgende namespace
<?php
namespace custom;
?>
Nu heb ik in de composer.json het volgende
"autoload": {
"psr-4": {
"custom\\": "app/"
}
}
wanneer ik een composer.update uitvoer krijg ik helaas de melding dat de class niet bestaat. Wat doe ik hier fout?
@Ozzie nee helaas werkt dat ook niet. Volgens de composer manual kom ik er ook niet helemaal uit.. de custom is in dit geval volgens de handleiding al de directory waarnaar gezocht moet worden en deze bevind zich in app/ als ik het goed begrepen heb.
Ik werk niet met Composer dus hoe het exact werkt weet ik niet.
Probeer eens het hardcoded path in te geven vanaf de root, dus "path/to/app". En als dat niet werkt, kijk dan even in je error log. Als he goed is zou je daaruit moeten kunnen afleiden welk path er gebruikt wordt en dan kun je waarschijnlijk zien waar het misgaat.
De app/ zit al in de root dir. verder zit er niets anders in app/ dan die custom directory. Verder wordt ik ook van de error log niks wijzer.. daar krijg ik namelijk exact dezelfde error..
uitvoeren, update is voor je packages bij te werken.
Ik zie nu dat je
return new app\custom\JsonFetcher($app);
gebruikt, maar je definieerd je namespace als "custom" en niet "app\custom".
daarom moet je "app" weglaten uit je namespace, of toevoegen in je autoload statement in je composer file.
Dit is dus juist geen PSR-4. In PSR-4 zet je je namespace niet meer in je mappen structuur. Dus al die mappen die alleen andere mappen bevatten (zoals app in dit geval) moeten weg. Dus de klassen van custom moeten direct in app/ en custom/ moet weg. Dan voer je in dat de custom namespace zich in de app map bevindt: