2017-04-16 3 views
0

Ich habe getestet, wie ich meine Pakete mit einer einfachen Klasse, die ich gemacht habe, zu Packagist erhalte. Wann immer ich es in einem anderen Projekt benötige, heißt es, dass die Klasse nicht gefunden werden kann. Stimmt etwas nicht mit meinem composer.json autoload Block?Warum wird mein Composer-Paket nicht automatisch geladen?

Hier ist mein Projekt Repo Dateistruktur:

- src 
    - prodikl 
     - View.php 
- .gitignore 
- composer.json 

Und hier ist mein composer.json:

{ 
    "name":"prodikl/simple-view", 
    "description":"A simple to use, basic View object.", 
    "require" : { 
    "php" : ">=5.3.0" 
    }, 
    "autoload": { 
    "psr-4": {"prodikl": "src/"} 
    } 
} 

Und schließlich in meinem view.php:

<?php 

namespace prodikl; 

class View 
{ 
    ... 
} 
Aber

, wenn ich es in ein Projekt benötigen und tue require "vendor/autoload.php" und verwenden use prodikl\View; es ihm immer wieder sagt, nicht gefunden

+1

Was passiert, wenn Sie 'prodikl \\\', um anzuzeigen, Namensraum? – frz3993

+0

Ich denke, das war ein Teil davon, yup! – Prodikl

Antwort

1

Sie müssen nur Ihre Autoloader nach unten einem weiteren Verzeichnis zeigen:

"autoload": { 
    "psr-4": {"prodikl": "src/prodikl/"} 
    } 

Das bedeutet, „Klassen, gehören zu dem \prodikl Namensraum, der im Verzeichnis src/prodikl/ zu finden ist. "

Unter Umständen müssen Sie Schrägstriche auf dem Namespace-Namen auch nicht sicher, wie pingelig Composer ist darüber nachlauf:

"psr-4": {"prodikl\\": "src/prodikl/"} 
+0

das war genau das! Ich habe ein paar Varianten dieses Pfades ausprobiert, aber das ist der richtige. Vielen Dank! – Prodikl

Verwandte Themen