gpt4 book ai didi

php - 预处理 PHP 以从构建的文件中删除功能

转载 作者:可可西里 更新时间:2023-11-01 13:23:26 27 4
gpt4 key购买 nike

我一直在阅读有关 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 ##

然后我将运行两个构建,一个将 premium 设置为 true,一个设置为 false,这将生成两个简单的文件:

echo 'some additional functionality';

echo 'basic functionality';

如果能够仅包含基于传递给构建应用的相同条件的整个文件,这也将非常有帮助。

我找不到办法做到这一点,但如果可能的话,我愿意接受任何替代想法。

帮助会很出色,

更新

使用 C 预处理器很棒,看起来它可以满足我的所有需求。但是,我找不到如何做以下三件事。

#1 我需要删除生成到输出文件中的注释。下面是其中的一个例子。

# 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 等文件上运行它是个坏主意..

再次感谢!

最佳答案

很抱歉挖掘这个话题,但我有同样的需求,而且 CPP 方法对我的使用有太多副作用。

所以我为 phing 开发了一个基本的预处理器过滤器来实现这一点:

#ifdef premium
echo 'some additional functionality';
#else
echo 'basic functionality';
#endif

过滤器在 github 上可用:https://github.com/tmuguet/PreProcessorFilter

关于php - 预处理 PHP 以从构建的文件中删除功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6153412/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com