よくある問題は、検証のためにサーバーとクライアントで同じコードを実行する必要があることです。JavaScript の負荷の高いページでは、両側で共有したい他の多くの機能があります。クライアント上で PHP を実行することはできないため、PHP から Javascript 関数を実行できるかどうか疑問に思います。Rhinoのようなサーバーサイド JSについて考えていますが、それを PHP に含める方法がわかりません。
4 に答える
PHP には V8 拡張があります。
編集: pecl パッケージのリンクは次のとおりです: http://pecl.php.net/package/v8js
サーバー側の javascript サービス、つまりnode.jsを使用して、PHP を使用してそれを呼び出すこともできますが、それは問題に対する単純な解決策または簡単な解決策ではありません。検証ロジックに非常に多くのクロスオーバーがある大規模なアプリケーションである場合にのみ、おそらく価値があります。
アレクセイカさんと同感です。
クライアントとサーバーの両方で JavaScript を実行するのではなく、逆のルートをたどる必要があると思います。サーバー側で検証コードを作成し、フォームが送信される前に Ajax を使用して検証を呼び出します。そうすれば、検証に同じコードを使用し (重複なし)、サーバーで JavaScript エンジンを実行することを心配する必要がなくなります。
また、サーバー上で実行する検証コードをクライアントに渡すと、検証コードの穴を誰かに見つけてもらうだけです。サーバー上で検証を維持すると、検証コードをユーザーから遠ざけることができます。
アップデート:
あなたの質問に検証以上のものが含まれていることに気づきませんでした。これは PHP ソリューションではありませんが、Google のClosure Toolsは、クライアントをサーバーと同じにする技術です。UI テンプレートを記述し、それらがどのように機能するか (レイアウト、検証、永続性) を定義すると、フレームワークが HTML、JavaScript、およびサーバー コードを作成します。これはすべて、コードを 1 回記述すれば、クライアントとサーバー間で同様のコードがフレームワークによって処理されるようにするためです。
これをphpで試してください:
echo "<script type='text/javascript'>
myfunction();
</script>";