簡単な質問かもしれませんが、Neo4j の初心者としての私にとってはハードルです。アプリケーションと同じディレクトリに、composer を使用して neo4jphp をインストールしました。Vendor-Subfolder が作成され、以下の everyman/neo4j フォルダーが使用可能になります。最初のテストでは、サンプルから次のコード スニペットを使用しました。
spl_autoload_register(function ($className) {
$libPath = 'vendor\\';
$classFile = $className.'.php';
$classPath = $libPath.$classFile;
if (file_exists($classPath)) {
require($classPath);
}
});
require('vendor/autoload.php');
use everyman\Neo4j\Client,
everyman\Neo4j\Transport;
$client = new Client(new Transport('localhost', 7474));
print_r($client->getServerInfo());
私はいつもエラーに出くわします
致命的なエラー: 抽象クラス Everyman\Neo4j\Transport をインスタンス化できません
グーグルでジョシュ・アデルからのコメントにたどり着きました。
Everyman\Neo4j\Transport は抽象クラスであるため、インスタンス化できません。必要に応じて、Everyman\Neo4j\Transport\Curl または Everyman\Neo4j\Transport\Stream をインスタンス化する必要があります。
だから私は use-statement を
use everyman\Neo4j\Client,
everyman\Neo4j\Transport\Curl;
しかし、これは機能しません。デバッグでは、オートローダーが「everyman\Neo4j\Transport\Curl.php」ではなく「Transport.php」のみを取得することが示されています。「Client.php」の場合はまだ機能しています(「vendor\everyman\Neo4j\Client.php」)ので、use-statementが間違っているか、コードが追加のサブフォルダー構造を処理できないと推測しています。
使用する
require('phar://neo4jphp.phar');
正常に動作しますが、これは非推奨であり、composer / autoload に置き換える必要があることを読みました。
誰が何を変更するか、または同じ問題を抱えているかのヒントを持っていますか?
時間をありがとう、バラエル