Skip to content

polidog/ElephantJs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ElephantJs

ElephantJsは、PHPからJavascritpを実行するためのライブラリです。
使用するためにはV8Jsが必要です。 それから、もちろんV8エンジンも必要なわけです。

Macで使う場合

brew install v8
pecl install v8js-0.1.3

使い方


require 'ElephantJs.php';

$a = "ElephantJs samples string a";

// 普通に動かす
$jsElephant = new ElephantJs(get_defined_vars());
$jsElephant->execute('print(PHP.getVars("a","local") + "\n");');

これで実行すれば、以下のように出力されます

ElephantJs samples string a

ファイルから実行したい場合は

require 'ElephantJs.php';
$jsElephant = new ElephantJs(get_defined_vars());
$jsElephant->executeFile('sample.js');

とファイル名を指定すれば実行できます。
実行したいディレクトリが別の場所の場合は指定することもできます。

require 'ElephantJs.php';
$jsElephant = new ElephantJs(get_defined_vars());
$jsElephant->executeFile('sample.js','/var/www/html/js');

注意 コンストラクタで必ずget_defined_vars()を引数として実行しないとローカルスコープの変数が取得できません。

Javascriptオブジェクトについて


ElephantJsで実行した場合にPHPという変数名でJavascript側にオブジェクトが渡されます。
今のところメソッドは以下のものを用意しています。

PHP.getVars('変数名','local'); // 第二引数はlocal or globalを指定する

PHP.getVars()を実行することによりPHP側の変数を取得する事ができます。 あと実行しているPHPのバージョンを取得したい場合は、PHP.versionで取得できます。

ちなみに、メソッドが足りない場合にPHP側からメソッドを動的に増やす事も出来ます。

例:printlnを追加する

$jsElephant->attachJs(array(
	'println' => 'function(key) { print( key + "\n") };'
));
$jsElephant->execute('PHP.println("これはJavascriptです。うそではないです。");');

About

ElephantJs is a library for running javascript from php

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published