k4200’s notes and thoughts

Programmer side of k4200

OrientDBをPHPから使う(2)

はじめに

第1回のエントリーはこちら

「OrientDBをPHPから使う」というタイトルなのに、前回PHPの話がまったく出てこなかったけど、今回はPHP bindingのお話。

Webで検索すると多分こっちのページが一番最初に見つかると思うけど、最新版はこっちらしい。

前回書いていなかったので、環境を

  • Orient DB Graph Edition 1.1.0
  • PHP 5.3

インストール、設定

README通りで問題ないが少し説明。

まずはgit cloneにてソースを持ってくる。

次に、そのディレクトリに入り、以下のコマンドを実行。

$ ./bin/initialize-dependencies.sh

このコマンドを実行するとComposerというものを使って、依存するパッケージとかをダウンロードしてくれる。ComposerはPHPMavenみたいなもの?

OrientDBのPHP bindingを使うためには、先ほどのディレクトリにある autoload.php を読み込むだけ

require_once '/path/to/Orient/autoload.php';

使い方

このPHP bindingは、PHP 5.3から導入された名前空間(namespace)を使用している。自分自身では殆ど使ったこと無いけど、Javaのパッケージ名みたいなものって理解しておけばとりあえず大丈夫かな。

まずは以下のように、利用する名前空間を宣言。

use Congow\Orient\Binding\HttpBinding;
use Congow\Orient\Binding\BindingParameters;

次に、OrientDBのPHP bindingのオブジェクト(HttpBinding)を取得。

$params = BindingParameters::create('http://admin:admin@hostname:2480/dbname');
$orient = new HttpBinding($params);

後はSQLを実行する。

// insert等のデータ更新系
$result = $orient->execute("CREATE CLASS Person EXTENDS OgraphVertex");

// selectとか
$out = $orient->query("SELECT FROM Person WHERE xxx = 1");
print_r($out->getResult());

// GremlinもOK
$out = $orient->query("SELECT GREMLIN('current.out[0..3]') FROM User LIMIT 10");
print_r($out->getResult());

おしまい

とりあえずこれでPHPからOrientDBが使えるようになった。consoleから実行出来る事は、多分PHPで全て実行可能だけど、それでもJavaの場合に比べると出来る事が限られていると思う。

次は(気が向いたら)、PHPから少し離れてOrient DBのオブジェクト等の構成要素(Edge, Vetex, Class, Link, Property etc.)について分かる範囲で書こうかなと。