如何以Javascript和PHP理解的方式表示公式?

时间:2009-10-13 04:43:57

标签: php javascript formula

我正在用PHP编写购物车,其部分功能是计算给定产品组的运费。对于启用了Javascript的用户,我希望通过在客户端进行准确的运费计算来提供最流畅的体验,以便购物车中的更改不需要页面重新加载或AJAX调用。

目前我在PHP中有一个计算运费的函数,以及Javascript中反映其功能的另一个函数。我担心公式可能经常变化,并且必须用两种不同的语言重写两个单独的函数(并确保它们的输出匹配)可能会产生可维护性问题。

我正在寻找的是一种表示以某种语言无关的方式计算运费的公式,这样它就可以被PHP和Javascript解释。目前,运输公式只是单个变量(项目数)的函数,但我希望能够在没有太多重写的情况下添加更多。

是否有一种可以通过PHP和Javascript解释的方式来表示一个相当简单的数学公式?最好不要自己编写翻译?

编辑:我不需要一个完整的功能,只是一个相当简单的数学公式,沿着“4 + 1.5n”。您可以在典型的电子表格单元格中找到的那种东西。

5 个答案:

答案 0 :(得分:4)

通常,您最好只维护两个版本的代码。当然,最优雅的解决方案是用JavaScript本身编写服务器逻辑(参见cappuccino.org);这对你来说是一个糟糕的选择,因为听起来你已经编写了大量的PHP代码。

但是,如果您真的觉得需要抓住这个痒,请考虑对服务器进行AJAX回调。虽然稍慢,但大多数用户都不会注意到。

答案 1 :(得分:3)

我会说在服务器端和用户AJAX上做这件事,对用户来说不会有太大的区别,但是当提交订单后的用户看到不同的计算时,维护两个版本会有所不同。

无论如何,如果你由于某种原因根本不想要AJAX,那么最好的方法就是拥有在客户端和服务器端执行的单个javascript库。 你可以在服务器端从php执行javascript。 例如你可以使用以下linux来执行javascript

http://www.mozilla.org/js/spidermonkey/ http://www.mozilla.org/rhino/ http://www.wxjavascript.net/

请参阅http://en.wikipedia.org/wiki/Server-side_JavaScript了解更多选项

答案 2 :(得分:1)

这是个坏主意,而且计算变得越复杂就越糟糕。

话虽这么说,Javascript确实支持美元符号在变量名称中是合法的。这两种语言之间有足够的通用语法,只要您只处理简单的数学运算,就可以轻松编写解析并在每种语言中运行相同的代码。数组可能有点琐碎。查看PHP.JS,这是一组用于在Javascript中模仿PHP内置函数的库。

(编辑:我在php.js的链接中进行了编辑,但不知道其他人会在我的编辑过程中发布相同的内容。对他有信用/恐怖。;)

答案 3 :(得分:1)

也许。看看php.js。它为您提供了所有的PHP功能,但是在JavaScript中。

您也可以在php中编写整个验证,并使用Ajax在客户端进行查询。

答案 4 :(得分:1)

可以说现在是时候向应用程序添加一些自动化测试,并且至少每次要将应用程序部署到生产服务器时都运行它们 - 如果其中一些失败,则取消部署。 / p>

您已经对PHP和JS代码进行了测试,其中一些测试会计算一些总金额/费用/运费;如果由于某些代码更改而出现问题,您将能够自动检测到问题,而不会导致应用程序中断。

当然,它需要更多的工作(用于编写测试,配置构建平台和维护测试数据);但那将是一个很好的安全......


另一种可能的解决方案是仅在Javascript中编写计算代码,并在客户端(这不是硬件,显然)以及服务器端运行它。

从PHP开始,您可以使用Spidermonkey PECL extension 执行JS代码(注意它仍然处于测试阶段;并且您需要能够安装PHP扩展,这可能只有在你是服务器的管理员 - 并且不确定稳定性。

以下是关于它的文章:Using JavaScript in PHP with PECL and SpiderMonkey

使用此解决方案,您可以将JS用于仅在客户端上运行的代码; PHP代码仅在服务器上运行...而JS代表双方运行的代码。