個人的な興味や趣味のために PHP プログラムを開発するとき、目的は達成できるものの 1,000 行を超える JS スクリプトに直面したとき、それを PHP で書き直す気力はありますか? PHP を使用してユーザーの動作をシミュレートしたいですか?しかし、js が溢れているサイトに遭遇しました...あまり知られていない php 拡張プロジェクトは、これらのニーズを満たすことができます。この拡張機能の目的は、php で javascript を解釈することです。
プロジェクトのホームページhttp://aurore.net/projects/php-js/
php-js-ext は、mozilla JavaScript インタプリタと php の間のブリッジであるため、最新バージョン 0.1.2 php-js をダウンロードする必要があります-ext の場合、最新バージョンの mozilla js 1.7.0 もダウンロードする必要があります。リンクは次のとおりです (php-js-ext 0.1.2 は js-1.5 で動作するようにリリースされましたが、私のテスト後、それも動作する可能性があります) js-1.7 は動作します)
wget http://aurore.net/projects/php-js/php-js-ext-0.1.2.tar.bz2
wget http://ftp.mozilla.org /pub/mozilla .org/js/js-1.7.0.tar.gz
システムはCentOS 4.5
1ですmozilla jsをインストール
js-1.7.0.tar.gzのロックを解除します
tar zxvf js-1.7. 0.tar.gz
cd js/src
コンパイルを開始します (コンパイルが完了できない場合は、最後の手順を参照してください)
make -f Makefile.ref
libjs.so を /usr にコピーします/lib
cp Linux_All_DBG .OBJ/libjs.so /usr/lib
ldconfig
ヘッダーファイルを/usr/include
cp jsapi.h jscompat.h jslong.h jsosdep.h jsotypes.hにコピーします。 jspubtd.h jstypes.h jsproto. tbl jsconfig.h Linux_All_DBG.OBJ/jsautocfg.h /usr/include/
mozilla jsのインストールが完了したので、php-js-extのインストールを開始しましょう
2. php-js-ext
php-js-ext-0.1.2.tar.bz2
tar jxvf php-js-ext-0.1.2.tar.bz2
cd php-js-ext-0.1を解凍します。 2
環境を作成し、拡張バージョンを設定します(複数のphpが存在する場合は、phpizeのフルパスを入力する必要があります)
/path/phpize
設定してコンパイルしてインストールします(複数のphpが存在する場合)存在するか、configure が php を見つけられません。configure -with-php-config=/path/php-config)
./configure
make && make install するときに場所を指定する必要があります
すべてが正しい場合、js.so はすでに php の lib ディレクトリにあります
最後に、php.ini を変更し、対応する場所に extension=js.so を追加し、extension_dir が正しく設定されていることを確認します。
phpinfo の結果を出力して、js.so が正しくロードされているかどうか、および考えられるエラー メッセージを確認します。
すべてが正しければ、この機能の使用を開始できます。
公式 Web サイトからの手順を添付します。
単純な ./configure; make install で、必ず extension=js.so 行を php.ini/php.d に追加してください。 : まず libjs をインストールする必要があります。Redhat 風のシステムを使用している場合は、上記で提供されている SRPM を使用できます。それ以外の場合は、js_eval を使用して JavaScript によって返された値を返します。 PHP への JavaScript インタープリター。
例:
js_eval("var a = 123;");
js_eval("var b = 456;");
$c = js_eval("[a, b];");
echo "a は ".$c[0]."n";
echo "b は ".$c[1]."n";
js_eval("var sum = function(x, y) { return x + y; }");
$d = js_eval("sum(a, b);");
echo "a と b の合計は ".$d."n";
次のようになります:
a 123
b は 456
a と b の合計は 579 です
js_eval はオプションのブール引数 assoc を受け取り、PHP オブジェクトの代わりにオブジェクトを連想配列として返します。
php-js 実行環境には、2 つの組み込み JavaScript システム関数が提供されます:
* print
* gc
print は引数を php 出力ストリームに出力します。
gc は JavaScript 環境内でガベージ コレクションを強制します。