一个常见问题是,对于验证,您需要在服务器和客户端上运行相同的代码。在JavaScript繁重的页面上,您还希望在双方之间共享许多其他功能。如果你可以从PHP运行Javascript函数,那么你无法在客户端上运行PHP。我在考虑server-side JS Rhino,但我不知道如何将它包含在PHP中。
答案 0 :(得分:2)
PHP有一个V8扩展名:http://php.net/manual/en/class.v8js.php从未尝试过那么多,但可能很有用
编辑:这是pecl包链接:http://pecl.php.net/package/v8js
答案 1 :(得分:2)
您可以使用服务器端javascript服务,即node.js,并使用PHP调用它,但它不是一个直接或简单的解决方案。如果它是一个大型应用程序,验证逻辑中存在大量的交叉,那么它可能是值得的。
答案 2 :(得分:1)
在php中试试这个:
echo "<script type='text/javascript'>
myfunction();
</script>";
答案 3 :(得分:1)
我和AlexeyKa一样。
我认为你需要走相反的路线,而不是在客户端和服务器上运行JavaScript。在服务器端创建验证代码,并在表单提交之前使用Ajax调用验证。这样,您使用相同的代码进行验证(无重复),您不必担心在服务器上运行JavaScript引擎。
此外,如果您向客户端提供您将在服务器上运行的验证代码,那么您只需要某人在验证代码中找到漏洞。在服务器上保持验证可以使您的验证代码远离用户。
我没有意识到你的问题不仅仅包括验证。这不是一个PHP解决方案,但谷歌的Closure Tools是一种技术,允许您的客户端与您的服务器相同。您编写UI模板并定义它们应如何工作(布局,验证,持久性),框架创建HTML,JavaScript和服务器代码。这一切都是为了确保您编写一次代码,并且框架处理客户端和服务器之间类似的任何代码。