2016-07-29 54 views
0

Neu bei PHP!php json-schema - Schwerwiegender Fehler: Klasse nicht gefunden

Ich habe /var/www/html/index.php erfordern json-Schema aus https://github.com/justinrainbow/json-schema

von git heruntergeladen und bewegte JsonSchema Ordner/var/www/html

folgende in index.php Fatal gibt Fehler: Klasse 'JsonSchema \ Einschränkungen \ Constraint' nicht

gefunden
require "JsonSchema/Validator.php"; 
use JsonSchema\Validator; 
$validator = new JsonSchema\Validator(); 
$validator->check(json_decode($data), json_decode($schema)); 

wenn ich Constraint.php umfassen, wirft es einen anderen Fehler aus. fehlen hier einige Grundlagen. Was ist der richtige Weg, um eine externe Bibliothek zu verwenden?

danke!

Antwort

2

Wenn Sie in den Projektstamm schauen, gibt es eine spezielle Datei namens composer.json, in der Sie den Namespace-Autoloader on line 46 finden.

"autoload": { 
    "psr-4": { "JsonSchema\\": "src/JsonSchema/" } 
}, 

Wenn Sie Ihr Projekt mit dem Komponisten installieren, dann this will generate a file called autoload.php, die einmal im Skript enthalten ermöglicht es Ihnen, alle Klassen zuzugreifen. Sonst sind Sie dazu verdammt, jede Klasse einzeln zu verlangen.

Außerdem erfordert die Verwendung jeder Klasse wirklich ineffiziente Speicherauslastung und Laufzeit, so dass des Composers spl_autoload_register verwendet, was noch besser ist, da es nur die Klassen lädt, wenn sie tatsächlich aufgerufen werden. Ansonsten, wenn Sie eine Tonne von Klassen benötigen und nicht alle von ihnen verwenden, dann ist es nur eine Verschwendung von Ressourcen und verlangsamt die Dinge.

Das erste, was Sie brauchen, ist composer

wget http://getcomposer.org/composer.phar 

der Regel Menschen, Komponist für das Herunterladen und einschließlich Pakete wie diese als neues Projekt Abhängigkeit verwendet wird.

php composer.phar require justinrainbow/json-schema:~2.0 

Aber da Sie bereits den Quellcode geklont haben, weil Sie wollen eigentlich dieses Paket entwickeln, dann erzeugen Sie einfach den Autoloader mit:

php composer.phar dump-autoload 

So Ihr Skript sollte wie folgt aussehen:

require __DIR__ . '/vendor/autoload.php'; 

use JsonSchema\Validator; 
$validator = new JsonSchema\Validator(); 
$validator->check(json_decode($data), json_decode($schema)); 
+0

Dank Jeff. Eine solche umfassende Antwort verdient mehr als ein Häkchen – Tims