我正在尝试使用Google Closure但通过php库调用。
这是我尝试使用
的代码https://code.google.com/p/php-closure/
到目前为止它似乎运作良好。但是我现在需要使用" Externs" Google Closure的功能。
我已经浏览了php库代码,但我不确定如何添加此功能。该库似乎调用了Google Closure在线API代码,所以我假设添加externs功能,我只需要传递附加到正确变量的正确字符串。
我不会在这里发布整个图书馆,因为它很难阅读,但我已经努力合并这个功能。
首先,我将变量添加到库
var $_srcs = array();
var $_mode = "WHITESPACE_ONLY";
var $_warning_level = "DEFAULT";
var $_use_closure_library = false;
var $_pretty_print = false;
var $_debug = true;
var $_cache_dir = "";
var $_code_url_prefix = "";
var $_extern_file = ""; //my new code
添加到哈希函数
function _getHash() {
return md5(implode(",", $this->_srcs) . "-" .
$this->_mode . "-" .
$this->_warning_level . "-" .
$this->_use_closure_library . "-" .
$this->_pretty_print . "-" .
$this->_extern_file . "-" . //here again
$this->_debug);
}
添加到参数列表
function _getParamList() {
$params = array();
...
$params["warning_level"] = $this->_warning_level;
$params["extern_file"] = $this->_extern_file; //again here
if ($this->_pretty_print) $params["formatting"] = "pretty_print";
if ($this->_use_closure_library) $params["use_closure_library"] = "true";
$params["output_info_1"] = "compiled_code";
$params["output_info_2"] = "statistics";
$params["output_info_3"] = "warnings";
$params["output_info_4"] = "errors";
return $params;
}
我的添加外部文件功能
function externs($file) {
$this->_extern_file = $file;
return $this;
}
然后是我的用户电话
$c->add("js/my-app.js")
->add("js/popup.js")
->externs("js/externs.js") //new code
->cacheDir("/tmp/js-cache/")
->write();
尝试执行代码时,我得到与原始代码相同的结果。看来我试图传递的外部文件没有被处理。
如果其他人对此功能/库感兴趣,请随时发布任何想法。
感谢。