php json-schema - Fatal Error: Class not found

php json-schema - Fatal Error: Class not found

新 PHP!

我有 /var/www/html/index.php 需要来自 https://github.com/justinrainbow/json-schema

的 json-schema

从 git 下载并将 JsonSchema 文件夹移动到 /var/www/html

index.php 中的以下内容给出了致命错误:Class 'JsonSchema\Constraints\Constraint' 未找到

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

如果我包含 Constraint.php,它会抛出另一个错误。我在这里缺少一些基础知识。使用外部库的正确方法是什么?

谢谢!

如果您查看项目根目录,则会有一个名为 composer.json 的特殊文件,您会在其中找到 on line 46 命名空间自动加载器。

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

当您使用 Composer 安装您的项目时,this will generate a file called autoload.php 一旦包含在您的脚本中将允许您访问所有 classes。否则你注定要一一要求class。

此外,要求每个 class 在内存使用和运行时上确实效率低下,因此作曲家的 autoload.php 使用 spl_autoload_register 更好,因为它只加载 class es 当他们实际被调用时。否则,如果您需要大量 classes 而没有使用它们,那只会浪费资源并减慢速度。

您首先需要的是composer

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

通常人们会使用 composer 来下载和包含像这样的包作为新项目的依赖项。

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

但是既然你已经克隆了源代码,因为你想真正开发这个包,那么你可以简单地生成自动加载器:

php composer.phar dump-autoload

所以你的脚本应该是这样的:

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

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