2016-04-05 21 views
1

Wahrscheinlich etwas trivial, aber ich habe ein Problem mit grundlegenden Autoloading. Ich möchte für die Erprobung neuer Lösungen nur Sandbox-Projekt erstellen, so dass ich folgende Struktur erstellt haben:Composer Autoloading mit PSR4

wie diese
Sandbox 
|- index.php 
|- composer.json 
|- vendor 
| |- {autogenerated content} 
|- src 
    |- Working.php 

Datei composer.json aussieht:

{ 
    "name": "vendor/sandbox", 
    "authors": [ 
     { 
      "name": "foo", 
      "email": "[email protected]" 
     } 
    ], 
    "require": { 
     "phpunit/phpunit": "dev-master", 
     "phpunit/phpunit-mock-objects": "dev-master" 
    }, 
    "psr-4": { 
     "Sandbox\\": "src/" 
    } 
} 

Natürlich habe ich composer.update nach Änderungen ausgeführt werden. Dann schrieb ich einen trivialen Körper Working.php:

<?php 

namespace Sandbox; 

class Working 
{ 
    public function __construct() { 
     echo "Hello World"; 
    } 
} 

Und natürlich index.php auch:

<?php 
require_once __DIR__ . '/vendor/autoload.php'; 

use Sandbox\Working; 

new Working(); 

?> 

Ich habe Berechtigungen für diese Dateien nur um sicher zu sein, aber wenn ich versuche ich zu laufen bekomme

PHP Fatal error: Class 'Sandbox\Working' not found in /var/www/Sandbox/index.php on line 6 

Ich realisiere, es ist wahrscheinlich etwas trivial, aber was kann hier falsch sein?

Antwort

1

Bei Ihrer composer.json fehlt Ihnen autoload Schlüssel. Es sollte wie sein

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

I neu, es war etwas trivial. .. Vielen Dank :) – Moby04

1

I

glauben
"psr-4": { 
     "Sandbox\\": "src/" 
    } 

werden sollten:

"autoload": { 
    "psr-4": { 
     "Sandbox\\": "src/" 
    } 

So Ihre Datei wäre:

{ 
    "name": "vendor/sandbox", 
    "authors": [ 
     { 
      "name": "foo", 
      "email": "[email protected]" 
     } 
    ], 
    "require": { 
     "phpunit/phpunit": "dev-master", 
     "phpunit/phpunit-mock-objects": "dev-master" 
    }, 
    "autoload": { 
     "psr-4": { 
      "Sandbox\\": "src/" 
    } 
}