是否有类似于CoffeeScript的PHP语言?

40

PHP解释器很常见,但PHP语法和库不一致且繁琐(当然这是我个人的看法)。我认为一种可以编译为PHP的语言,提供更高级别的功能(例如模块、混入、列表推导等),并且具有更简单的语法(例如可选分号、隐式返回、变量无需使用美元符号、可选括号和大括号等)将是很有价值的。是否已经存在这样的语言呢?


6
使用其他语言怎么样?据我所知,CoffeeScript之所以被使用是因为没有任何可行的替代客户端脚本语言来代替JavaScript。如果你必须使用PHP,尝试使用Smarty(可以编译成PHP,可扩展,大部分情况下可以创建自己的语法)。 - Wesley Murch
可能是在PHP之上的新语言?的重复问题。 - Jonas
10个回答

25

我已经进行了大量的研究,目前似乎答案是否定的。我是这样一个项目的作者,该项目名为Snowscript,虽然远未完成,但文档相当不错,有些功能也是可行的。很希望听到您对语法的反馈!


2
你刚刚给了我一个新的项目要跟进。 :D - Blank
2
Snow 的更新链接:https://github.com/runekaagaard/snowscript - user131441
3
目前,答案是肯定的!不要太谦虚了,这个东西看起来很棒。 - Prof. Falken
1
那看起来很棒。我希望这个项目不会随着时间的推移而消失。 :) - midudev
2
看起来很不错,也许能在某种程度上支持它! - Jasper Kennis
显示剩余2条评论

24
短答案是“不需要”。CoffeeScript之所以流行,是由于多种因素的独特融合。首先,正如Wesley所指出的那样,JavaScript在浏览器平台上垄断了市场,而PHP只在.php文件中占据主导地位。在您自己的服务器上,如果您不喜欢PHP,可以使用Ruby、Python、Perl或任何其他JVM或.NET语言。
另一个因素是JavaScript的设计有点偶然性。它的创造者Brendan Eich被告知“让它看起来像Java”;但从语义上讲,它更类似于Lisp和Smalltalk。CoffeeScript提供了一种语法,更适合JavaScript的内部工作方式。
JavaScript自身的语法演变受到了与旧版浏览器兼容的限制。PHP没有这样的限制,任何将其代码从PHP4转换为PHP5的人都可以证明这一点。如果您想使JavaScript成为更好的语言,则需要一个预编译器。如果您想使PHP成为更好的语言,请发布PHP6的功能请求。(编辑:在我的原始回答中,我上当受骗,相信PHP6已于2010年发布。显然我不是PHP专家...)

话虽如此,拥有一种类似于 CoffeeScript 的 PHP 语言可能会很酷。WordPress 的持续成功以及其在用户往往无法控制的服务器上的使用,证明了 PHP 作为一种部署语言的独特地位。使用替代标记语言(如 Haml)与 PHP 难以协调。也许结合替代标记语言和全新的 PHP 语法,可以产生足够吸引人的理由,让人们预编译他们的 PHP。


6
+1,但我认为你应该再读一遍关于PHP6的那篇文章......并注意它发布的日期:D - Wesley Murch
我认为有一个合理的理由想要一个PHP中间格式 - 它被几乎所有可用的共享托管服务支持。Node(js)和其他语言没有几乎普遍的支持。我想Perl也有类似高的可用性。例如,如果您正在编写WordPress插件,则具有替代语法可能会很有吸引力。我希望有些东西可以摆脱那个奇怪的->语法 :) - Allan Nienhuis
1
我曾经在一个具有Ruby式语法的语言上工作过(https://github.com/gosukiwi/IcedTea),它非常实用和简洁,虽然缺少像CoffeeScript那样的一些语法糖。 - gosukiwi
5
Mammouth是一个相当有趣的项目。哦,它还复制了Coffeescript。 http://mammouth.wamalaka.com/#installation - Carson Wright
1
JavaScript的设计有点偶然,我认为这也适用于PHP。 - André Laszlo
1
请注意,您现在可以在http://mammouth.boutglay.com/或他们的GitHub页面https://github.com/btwael/mammouth找到Mammouth。 - Klaus

16

在浏览和冲浪互联网时,我发现http://mammouth.boutglay.com/ 看起来最像 PHP 的 CoffeeScript 语言。看起来可以胜任该工作。


12
如果我理解你的需求正确的话,那么有一个叫做Haxe的工具可以编译成PHP、Flash、JavaScript等多种语言。我只用过它来编译Flash,但发现它非常有用。

2
是的,haXe 可能是唯一一个编译成 PHP 的流行语言。当然,它与 PHP 的距离比 CoffeeScript 与 JavaScript 的距离要远得多。 - Trevor Burnham

5
如果你喜欢Lisp,可以看看Pharen。我还没有使用它的必要,但它看起来非常不错——它有defmacro,甚至将尾递归转换为循环。

4

@gosukiwi制作了Blueberry,它看起来像这样:

/* 
 I'm a multiline comment
*/

a = 1 # variable definition

# you can use JSON syntax to define associative arrays
arr = { "name": "Mike", "age": 18, "meta": { "items": [1, 2, 3] } }

if a == 1
  echo("Hello, World!")
end

for i in (0..10)
  echo(i)
end

class MyClass < MyParentClass
  @name

  def Greet
    echo("Hello! My name is " & @name)
  end
end

他们也在这条评论中提到了它。


这很不错,我用它将一些JSON转换成了PHP数据结构。 - iamnotsam

1

目前没有适用于PHP的生产就绪或完成的类似Coffeescript的语言/编译器。

我是CoffeePHP的作者,正在开发更短语法的编译器。实际上它是另一种语言。

https://github.com/c9s/coffeephp


0

当然,你可能已经知道了,但是你可以简单地使用nodejs和CoffeeScript...(除非你特别喜欢PHP)


3
回想起来,我猜对于熟悉CoffeeScript的人来说,nodejs连接很明显。不知道为什么我给出了这个答案。 - Rehno Lindeque

0

这个库本身并不像CoffeeScript,但它是将PHP重写为声明和使用自己的语法的基础。我没有任何使用经验,所以请不要把这看作是支持,只是观察。https://github.com/theseer/preprocessor


-1

2
这是一个用PHP编写的将CoffeeScript编译为JavaScript的编译器。原帖作者正在寻找一种可以编译成PHP的语言。 - Adrian Macneil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接