2011-09-23 15 views
11

PHP5で書かれたWebベースのアプリケーションを開発しています。これは基本的にデータベースの上にあるUIです。ユーザーにもっと柔軟なツールを提供するために、スクリプト言語を組み込みたいので、SQLクエリを起動したり、ループしたり、変数にデータを格納したりといった複雑な作業を行うことができます。私のビジネスドメインでは、Pythonはスクリプトに広く使われていますが、私は単純なDomain Specific Languageを作ることも考えています。スクリプトは、私の既存のPHPクラスをラップする必要があります。PHP Webアプリケーションでのスクリプト作成のためのpython/dslの埋め込み

私はこの開発タスクにアプローチする方法についてアドバイスを求めていますか?

更新:PostgreSQLでPLPGSQLを使用してデータベースでスクリプトを作成してみます。これは今のところ行いますが、PHPクラスをこのように使用することはできません。 Luaのアプローチは魅力的で、私が望むもの(Python以外のもの)のようです。

+0

セキュリティ?これはWebアプリケーションですか? –

+1

PHPは素晴らしいスクリプト言語です。なぜそれを使用できないのですか? –

+0

@ tandu:PHPはサンドボックス化をサポートしていないので、これはおそらく望むものです – aurora

答えて

2

Pythonに拘束されていない場合は、たとえばLuaをスクリプト言語として使用できます。 Luaは非常に軽量な言語で、習得が容易で、埋め込みを考慮して開発されています。既に少なくとも2つのPHP拡張モジュールが用意されています.LuaをPHPにうまく埋め込むため、PHPとLuaの間のアプリケーションへのアクセスを可能にします。

http://pecl.php.net/package/lua

この1つはまた、いくつかの素晴らしい例があります:

http://phplua.3uu.de/

は、私はすでに簡単な実験のために後者の1ビットを使用してきましたし、それはかなり良い作品を見てみましょう。

0

あなたは、Pythonを使わずに、それを行うことができます。あらかじめ定義された「タグ」のユーザー入力を解析し、その結果を返します。

1

セキュリティ、セキュリティ、セキュリティ!ただそれを邪魔したくなった。あなたがしようとしているように見えるものは、かなり恐ろしいように聞こえるが、それはあなたの足である。

また、私が気づいていないPHPの上で実行されるPythonの実装(PHPython?)がない限り、2つの異なるサーバーサイドの言語を混在させることをやっているようです。

PHPコードを何らかの方法で呼び出す場合は、eval()やexec()などで簡単に実行できます。 how to input python code in run time and execute it?

PHPクラスのラッピングに関しては、正確にそのことを達成できるかどうかはわかりません。 PHPクラスをPythonクラスでミラーリングし、JSONのようなものを使用して2つの間でデータを転送することができます。

はあなたが上のあなたのロジックをやっている場合は、バックエンドにMVC

  • 延期あなたのロジックを使用してフロントエンドにPHPであなたのロジックを実行します。

  • +0

    PythonでPHPクラスをラップすることを目的としたPIP http://www.csh.rit.edu/~jon/projects/pip/がありますが、非常に活発なプロジェクトではないようです。 –

    +0

    LOL、私はどこかにそこにいたことを知っていたはずです。 – ThatAintWorking

    0

    は、次の2つの選択肢がありますフロントエンドでは、PHP5 MVCフレームワークなどを調べることができます。Zend

    ロジックを延期する場合は、好きなスクリプト言語を使用できます。たとえば、PythonでSQLAlchemyを使用すると、データベースにアクセスできます。

    3

    クライアントでスクリプトを実行するのはいかがですか。これにより最大限のセキュリティが保証され、サーバーリソースも節約されます。

    つまり、Javascriptはスクリプトプラットフォームです。あなたがするのは、バックエンドの機能をjavascript関数として公開することです。あなたのアプリが現在書かれている方法に応じて、バックエンドの作業が必要な場合があります。

    あなたは実際の言語のjavascriptに限定されていません。 Googleは "javascriptにコンパイル"し、最初のヒットは使用できる言語のリストにする必要があります。

    1

    私はプレハブの解決策を知りません。しかし、pypyはRPythonで書かれたPythonの実装で、sandboxingの機能を持っているので、信頼できないコードを実行することができます。

    しかし、あなたのドメインに明白なDSLを設計できれば、それは簡単な解決策かもしれません。

    関連する問題