Ich habe mein Bestes getan, um eine Frage/Antwort zu finden, die zutrifft, aber ich glaube nicht, dass ich genug über den Autoloader verstehe, um eine passende Antwort zu erkennen.First Composer Paket - Autoloader funktioniert nicht
Ich habe ein Paket mit dem folgenden composer.json:
{
"name": "Pva_agent",
"type":"library",
"description" : "query the pva agent",
"version":"0.1b",
"authors" : [
{
"name":"Ed Greenberg",
"email":"[email protected]"
}
],
"minimum-stability":"dev",
"require": {},
"autoload": {
"psr-0": {
"Pva_agent": "."
}
}
}
Meine Verzeichnisstruktur nach Komponist Installation des Pakets:
.
./vendor
./vendor/autoload.php
./vendor/Pva_agent
./vendor/Pva_agent/Agent.php
./vendor/Pva_agent/composer.json
./vendor/Pva_agent/.gitignore
./vendor/composer
./vendor/composer/autoload_psr4.php
./vendor/composer/autoload_real.php
./vendor/composer/autoload_classmap.php
./vendor/composer/autoload_namespaces.php
./vendor/composer/installed.json
./vendor/composer/autoload_static.php
./vendor/composer/ClassLoader.php
./vendor/composer/LICENSE
./composer.lock
./composer.json
./test_pva_agent.php
Mein Testprogramm:
<?php
require_once('vendor/autoload.php');
use Pva_agent\Agent;
$agent = new Agent();
Mein Ergebnis:
[email protected] pva_project $ php test_pva_agent.php
PHP Fatal error: Class 'Pva_agent\Agent' not found in /home/edg/PhpstormProjects/pva_project/test_pva_agent.php on line 6
PHP Stack trace:
PHP 1. {main}() /home/edg/PhpstormProjects/pva_project/test_pva_agent.php:0
[email protected] pva_project $
Ich dachte nicht, dass ich die Anweisung 'verwenden' brauchte, da der Autoloader die Klasse finden sollte, oder?
Kann mir jemand sagen, wo das Problem liegt?
Danke,
Ed Green
Hmmm ... Danke, Lukas, aber deine Antwort erzeugt mehr Fragen :) Composer legte meine Bibliothek unter den Anbieter, so wie es alles, was ich aus dem Internet bekommen würde, setzen würde. –
Composer sollte Ihren Quelltext nicht unter dem 'vendor /' platzieren. Wenn Sie in den 'vendor /' Ordner einsteigen, sollten Sie den Pfad zu Ihrer Bibliothek in der Liste sehen: 'vendor/composer/autoload_psr4.php'. Sie können eine Struktur meiner [PhiKettle-Bibliothek] (https://github.com/loftdigital/PhiKettle) als ein Beispiel überprüfen. Versuchen Sie, das Projekt zu klonen und 'Composer Update' auszuführen. –