PHP代码将PHP转换为JS - php

Improve this question

我需要一些PHP代码才能将一些PHP转换为JS。

功能-我正在使用php.js中的常见PHP功能
句法 - ???

问题是转换语法。请注意,我不需要完整的PHP语法。无需支持类定义/声明。以下是一些需要转换的清单:

“。”应为“ +”(字符串concat)
“->”应为“。” (对象运算符)
“::“ 应该 ”。” (类运算符-并非必需)

请注意,生成的代码在很大程度上与PHP环境无关,因此没有“如果使用PHP类怎么办?”。

我不是在要求完整的代码,只是在向这种转换的正确方向提示。我当时正在考虑使用状态机/引擎。

如果您对为什么将代码推送到用户端感到好奇:我需要一种动态的方法来在给定条件下更改某些元素的可见性。我的计划是这样做,而不必执行此代码服务器端并且不需要不必要的ajax调用。

编辑:看人。我知道不使用AJAX对您来说听起来很可笑,但是在炒作和听起来不错的设计条件(= ajax)上,世界并不起作用。我根本负担不起每个用户每秒对服务器进行5到10次轮询,只是让我的服务器返回“是”或“否”答案。请记住,切换是异步的,我无法缓冲AJAX调用。

编辑2:我确信我正在做的事是我所处情况的最好方法。没有“可能更好”的方法,所以请停止发布非建设性的评论。我已经比现在更详细了。从PHP代码到JS的转换仅是缩短用户输入的问题。我们只需要一个表达式,然后将其转换为所需的任何一种语言(在这种情况下,就是从PHP到JS)。不管我是否按照API规范描述系统,这种工作方式的条件都不会改变,并且用无用的(对您来说)原型文档淹没这个话题根本没有帮助。

同样,对于那些以为这个想法是从梦中醒来之后想到的。知道这已经在技术开发和质量检查之间进行了审查,因此请不要偏离不存在的设计问题。

编辑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标记,回显,死亡,列表等。被故意遗漏了)

参考方案

好吧,让我at一下这个...

螺丝正则表达式。我喜欢它们,但是有更好的方法,它是内置的。请查看token_get_all()。它将PHP源解析为字符串,并返回the very same tokens that PHP itself uses列表(包括心爱的T_PAAMAYIM_NEKUDOTAYIM)。然后,您可以一次一次完整地重建脚本的源代码,并一路将其转换为Javascript语法。

[charles@teh ~]$ php --interactive
Interactive shell

php > print_r(token_get_all('<?php class Foo { public function bar() { echo "Yikes!"; } } $f = new Foo();  $f->bar(); ?>'));
Array
(
[0] => Array
    (
        [0] => 368
        [1] => <?php 
        [2] => 1
    )

[1] => Array
    (
        [0] => 353
        [1] => class
        [2] => 1
    )

[2] => Array
    (
        [0] => 371
        [1] =>  
        [2] => 1
    )

[3] => Array
    (
        [0] => 307
        [1] => Foo
        [2] => 1
    )
... 

尽管这可能有点过大,但它也使用PHP使用的相同解析规则,因此,与正则表达式相比,它应避免长期的痛苦。它还使您可以灵活地检测无法翻译的功能(即php-js不支持的功能)并拒绝翻译和/或解决问题。

另外,您仍然没有告诉我们您在做什么以及为什么这么做。仍然可能会有更准确,有用的答案。通过提供更多信息来帮助我们为您提供帮助。

您认为轮询是不切实际的,因为预期每秒的请求数量会非常高。你为什么要这个数字?您的应用程序该怎么做会导致这种情况?
为什么要翻译PHP代码而不是编写特定的Javascript?您只是在操纵页面内容,为什么需要PHP代码才能做出此决定?
语言翻译可能是解决此问题的最简单方法,因此是一个令人震惊的想法。不可能将其作为第一选择。您还有其他选择吗?为什么要排除这些选择?

php:将分钟取整到最近的四分之一小时,然后执行更多操作 - php

最初的问题是这样的:取分钟数->转换为四分之一小时-> 1个四分之一小时为1个单位->输出单位我今天整天都在整理页面,几分钟前我的大脑就停止工作了,我只是不知道如何输出单位数量。我知道在此网站上发布问题会有所帮助。因此,用户输入的分钟数(不是小时和分钟,而是数分钟),站点需要输出单位数量。单位是一个刻钟。分钟总是四舍五入到最近的四分之一小时…

php Singleton类实例将在多个会话中保留吗? - php

举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…

PHP OOP概念付诸实践 - php

目前,我所拥有的是一份以程序庄园形式编写的审查表。我想更改一些内容,并希望在此过程中,根据过去的经验,在OOP中,网站的整个审核部分会更好。数据流如下:HTML表单=>提交=> jQuery验证=>? => PHP验证=>添加记录我的问题是要了解将POST数据传递给类的正确方法是使用AJAX / jQuery或使用具有标准感谢页…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP-如何获取类的成员函数列表? - php

如果我知道班级的名字。有没有办法知道类的成员函数列表? 参考方案 get_class_methods()是你的朋友