【发布时间】:2011-03-15 05:44:30
【问题描述】:
我需要一些 PHP 代码来将一些 PHP 转换为 JS。
- 功能 - 我正在使用来自php.js 的常见 PHP 函数
- 语法 - ???
问题在于转换语法。请注意,我不需要完整的 PHP 语法;不需要支持类定义/声明。以下是需要转换的小清单:
- “。”应该是“+”(字符串连接)
- “->”应该是“.” (对象运算符)
- “::”应该是“.” (类运算符 - 不是必需的)
请注意,生成的代码几乎独立于 PHP 环境,所以没有“如果它使用 PHP 类怎么办?”。
我不是要完整的代码,只是对这种转换的正确方向的提示;我正在考虑使用状态机/引擎。
如果您对我为什么将代码推送到用户端感到好奇:我需要一种动态方式来在特定条件下更改特定元素的可见性。我的计划是这样做,而不必在服务器端执行此代码并进行不必要的 ajax 调用。
编辑:看人。我知道不使用 AJAX 对您来说听起来很可笑,但这个世界并不适合炒作和听起来不错的设计条件 (=ajax)。我根本负担不起每个用户每秒轮询我的服务器 5 到 10 次,只是为了让我的服务器返回“是”或“否”的答案。请记住,切换是异步的,我无法缓冲 AJAX 调用。
编辑 2:我确信我正在做的是在我的情况下最好的方法。没有“可能更好”的方法,所以不要发布非建设性的 cmets。我无法比我已经了解的更详细了。从 PHP 代码到 JS 的转换只是缩短用户输入的问题;我们只需要一个表达式,然后将其转换为所需的任何一种语言(在这种特殊情况下,从 PHP 到 JS)。无论我是否将系统描述为 API 规范,其工作方式的条件不会改变,并且用无用的(对您而言)原型文档淹没该主题根本无济于事。
另外,对于那些认为这个想法是在梦中醒来后产生的;知道这已经在技术开发和 QA 之间进行了审查,所以请不要偏离不存在的设计问题。
编辑 3: 示例(原始 PHP 代码和预期输出):
- (原始)--(转换)
-
5=="test"--5=="test" -
'$'.(func(12)*10)--'$'+(func(12)*10) -
Fields::count()==5--Fields.count()==5 -
$this->id==5--this.id==5
关于最后一个例子,不用担心上下文/范围,它是正确的。另请注意,表达式可能看起来很奇怪;这是因为它们都是表达式;必须返回值的单行代码,它解释了 EOL (;) 的缺失以及返回布尔值的多种用途。 (反引号运算符执行、PHP 标记、echo、die、list 等奇异的东西。故意省略)
【问题讨论】:
-
也许我在这里太保守了,但这听起来像一个想法,它消耗的时间比它节省的时间要多。
-
也许你应该告诉我们为什么你想做这件令人震惊的疯狂事情。为什么用户每秒会发出 5-10 次请求?您正在构建的应用程序到底是什么?可能还有其他更好的方法来完成这项工作。
-
我为什么要讲这么多细节?我已经指定了使用条件,并且通过提供更多细节,这些条件不会改变。现在,您介意专注于讨论而不是轻浮的“假设”吗?该决定通过了 3 人的审查(其中 2 人审查了技术方面),所以请停止指责我不知道自己在做什么。我可能不是一个装饰过的 stackoverflow 用户,但这并不意味着我是一个玩 PHP/JS 的新手。
-
@Christian 你能发布一些应该转换的完整示例吗?您是否考虑过构建一种简化的“元”语言来满足您的需求并且可以编译成 JS 和 PHP?这可能比使用正则表达式或其他东西检测各种语言怪癖更容易。
-
没关系,但你必须了解观众,而不是埋没领导。当然,您不能指望编译器专家 24/7 全天候在线等待您的问题。我确信您不希望有人只给您一些代码,但您首先使用了另外一个措辞:“我需要一些 PHP 代码来将一些 PHP 转换为 JS。”我并不是说这就是你在这个问题上遇到问题的原因。但是,所有相关方之间存在沟通问题。换句话说,您错误地提出了问题。
标签: php javascript parsing syntax