【发布时间】:2011-09-03 10:46:49
【问题描述】:
我一直在阅读有关 Phing 和 Ant 的文章,但我不确定这些工具中的哪一个(如果有的话)对这种情况最有用。
它可能很容易是调试语句等,但我会给你我们的文字扫描。
我们有一个可下载的 PHP 应用程序的免费和高级版本,而不是仅仅包含一个隐藏在某处的变量然后执行:
if($premium == true) {
echo 'some additional functionality';
} else {
echo 'basic functionality';
}
显然有人可以获取源代码并更改该变量,然后砰的一声——他们窃取了我们的代码。根据我的经验,像 Ioncube 之类的东西完全不实用,而且对托管公司的支持还不够好。
我更喜欢一些东西..也许类似于这个:
## if premium ##
echo 'some additional functionality';
## else ##
echo 'basic functionality';
## endif ##
然后我会运行两个构建,一个将溢价设置为 true,一个设置为 false,这将生成两个文件:
echo 'some additional functionality';
和
echo 'basic functionality';
根据传递给构建应用程序的相同条件,仅包含整个文件也是非常有帮助的。
我找不到这样做的方法,但如果可能的话,我愿意接受任何替代想法。
帮助很大,
更新
使用 C 预处理器很棒,看起来它可以满足我的所有需求。但是,我找不到如何做以下 3 件事。
#1 我需要将生成的 cmets 移除到输出文件中。以下是其中的一个示例。
# 1 "./index.php"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "./index.php"
我没有在您链接到的手册页中找到如何执行此操作的示例。
#2 我需要让它递归地遍历每个发现的文件。当我运行当前代码时出现错误:../target/./folder/test.php: No such file or directory
所以基本上我有我所在的“源”文件夹,其中包含一个名为“文件夹”的子文件夹,它不会重新创建它,也不会重新创建其中的文件 (test.php)
#3 我确信这很简单——我怎样才能让它处理 .js 文件,可能还有 .html 以确保安全?一通电话,我的意思是。我认为在 .jpg 等文件上运行它是个坏主意..
再次感谢!
【问题讨论】:
-
你如何部署你的包?如果使用 PEAR 进行打包,只需创建两个不同的
packages.xml(当然不能同时命名为package.xml)。 -
我们实际上不使用 PEAR 进行包装。部署只是压缩文件并将其上传到我们的服务器。它在这个领域非常基础,简单是关键——只有一个来源,因此不需要版本控制等。但我无法手动跟踪不相关区域中的错误并将该修复合并到天知道有多少定制我们会结束的。