【问题标题】:Is there anything like CoffeeScript for PHP?有没有类似 PHP 的 CoffeeScript 的东西?
【发布时间】:2026-01-06 21:05:01
【问题描述】:

PHP 解释器非常常见,但 PHP 语法和库不一致且繁琐(当然是 IMO)。我认为一种语言可以编译成 PHP,但提供更高级别的功能(如模块、mixins、列表理解等)和更简单的语法(如可选分号、隐含返回、变量没有美元符号、可选括号和大括号等...)将是有价值的。有这样的东西吗?

【问题讨论】:

  • 使用另一种语言怎么样?使用 AFAIK Coffeescript 是因为没有可行的替代 javascript 客户端脚本语言。如果你必须有 PHP,不妨试试 Smarty(编译成 PHP,可扩展,大部分情况下创建你自己的语法)。

标签: php programming-languages


【解决方案1】:

我一直在研究这个问题,目前看来答案是否定的。我正是这样一个名为Snowscript 的项目的作者——它远未完成,但文档非常好,而且有些东西确实有效。很想听听您对语法的看法!

【讨论】:

  • 你刚刚给了我一个新的项目。 :D
  • 目前,答案!别太谦虚了,这东西看起来很棒。
  • 这看起来很棒。我希望这个项目不会随着时间的推移而消失。 :)
  • 确实不错,或许能支持一下!
【解决方案2】:

简短的回答是“不”。 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 had been released in 2010。显然我不是 PHP 人......)

综上所述,拥有一种类似于 CoffeeScript for PHP 的语言可能会很酷。 WordPress 的持续成功,以及它在用户通常几乎无法控制的服务器上的使用,证明了 PHP 作为一种部署语言的独特地位。将 PHP 与 Haml 等替代标记语言一起使用也很困难。也许另一种标记语言与新的 PHP 语法相结合可以为人们预编译他们的 PHP 提供一个足够令人信服的理由。

【讨论】:

  • +1,但我认为你应该再读一遍关于 PHP6 的文章......并注意它的发布日期:D
  • 我研究过一种具有 ruby​​-ish 语法的语言 (github.com/gosukiwi/IcedTea),尽管它缺少一些像 CoffeeScript 一样的语法糖,但它非常实用且简单。
  • Mammouth 是一个相当有趣的项目。哦,它复制了coffeescript mammouth.wamalaka.com/#installation
  • “JavaScript 的设计有点意外”——我认为这也适用于 PHP。
  • 请注意,您现在可以在 mammouth.boutglay.com 或在他们的 GitHub 页面 github.com/btwael/mammouth 找到 Mammouth
【解决方案3】:

浏览网页我发现http://mammouth.boutglay.com/ 看起来最类似于 PHP 的咖啡脚本语言。似乎可以胜任。

【讨论】:

    【解决方案4】:

    如果我正确理解了您想要的内容,那么Haxe 可以针对 PHP,以及 Flash、JavaScript 等。

    我只将它用于 Flash,但发现它非常有用。

    【讨论】:

    • 没错,haXe 可能是唯一一种可以编译成 PHP 的流行语言。当然,它与 PHP 相比,CoffeeScript 与 JavaScript 的距离要远得多。
    【解决方案5】:

    如果您喜欢 Lisps,请查看 Pharen。我还不需要使用它,但它看起来很不错 - 它有 defmacro 甚至可以将尾递归转换为循环。

    【讨论】:

      【解决方案6】:

      @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
      

      他们也在this comment中提到过。

      【讨论】:

      • 这个不错,用它把一些 JSON 转换成 PHP 数据结构。
      【解决方案7】:

      目前没有可用于生产的或已完成的 PHP 类咖啡脚本语言/编译器。

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

      https://github.com/c9s/coffeephp

      【讨论】:

        【解决方案8】:

        当然,您可能知道这一点,但您可以简单地将 nodejs 与 CoffeeScript 一起使用...(除非您专门连接到 PHP)

        【讨论】:

        • 回想起来,我猜 nodejs 的连接对于任何熟悉 CoffeeScript 的人来说都是显而易见的。不知道我为什么给出这个答案。
        【解决方案9】:

        这个库本身并不像 CoffeeScript,但它是重写 PHP 以声明和使用自己的语法的基础。我对此没有任何经验,因此不要将其视为认可,而只是观察。 https://github.com/theseer/preprocessor

        【讨论】:

          【解决方案10】:

          看看 github 上兼容 coffescript 1.3.1 的 coffescript-php 项目可以在https://github.com/alxlit/coffeescript-php找到

          【讨论】:

          • 将 CoffeeScript 编译为 JavaScript,用 PHP 编写。 OP 正在寻找一种可以编译为 PHP 的语言。
          最近更新 更多