samsonos / php_coffeescript
将 CoffeeScript 编译器移植到 PHP 的 SamsonPHP
Requires
- php: >=5.3.0
- samsonos/php_core: *
- samsonos/php_resourcer: *
This package is not auto-updated.
Last update: 2024-09-14 15:00:51 UTC
README
CoffeeScript 编译器的 PHP 版本。
状态
CoffeeScript 版本 1.3.1 已完全移植(见 标签)。移植的编译代码与参考代码之间有一些微小的差异(例如 #11),否则它们匹配 100%。
需求
PHP 5.3+(使用命名空间,匿名函数)。
安装
建议使用 Composer 安装和自动加载 CoffeeScript。或者您可以手动加载它
<?php require 'vendor/CoffeeScript/Init.php'; // Load manually CoffeeScript\Init::load(); ?>
用法
API 非常简单(单个 compile($coffee, $options = NULL)
函数)。我不打算进一步扩展它(保持简单)。以下是可用的选项
- filename - 源文件名,格式化成错误信息
- header - 添加 "由...生成" 头
- bare - 如果设置为
true
,生成的 JavaScript 不会嵌入到 IIFE - rewrite - 启用重写器(调试)
- tokens - 对令牌流的引用(调试)
- trace - 写入解析器跟踪的文件(调试)
<?php $file = 'path/to/source.coffee'; try { $coffee = file_get_contents($file); // See available options above. $js = CoffeeScript\Compiler::compile($coffee, array('filename' => $file)); } catch (Exception $e) { echo $e->getMessage(); } ?>
开发
要重建解析器,请运行 php make.php
。测试在浏览器中运行;只需将存储库克隆到 Apache 可以看到的某个位置,然后导航到 tests/。
常见问题解答
这个项目的动机是什么?
当时我大量使用 PHP,并希望使用、了解更多关于 CoffeeScript 项目,并可能为其做出贡献。我认为有一个原生版本会很好,所以我试了一下。
为什么不修改原始编译器以输出 PHP?
有很多原因... 首先,我不知道你为什么要这样做。如果你觉得 PHP 不能忍受,就别用它... 第二,原始编译器依赖于 Jison,它是用 JavaScript 编写的,所以你必须处理这个问题。第三,我认为尝试解决 JavaScript 和 PHP 之间的所有差异(对象模型、核心类和库等)将是一项更大的工作。
你使用什么解析器生成器?
由于没有 Bison 的 PHP 版本(参考编译器使用),我们正在使用 Lemon 的一个端口,称为 ParserGenerator。
它被本地包含,因为 PEAR 包不再维护且似乎已损坏。此外,对解析器模板(Lempar.php)和实际生成器做了一些小的修改。