我想创建一个相同PHP组件的精简和完整版本。当然我希望两者共享一个共同的代码库 - 所以如果我发现错误或添加功能,我只需要在一个地方更新它。
在编译语言中,更好的方法是只有一个项目,具有多个目标 - 每个版本一个。在这种情况下,我将使用预处理器宏来识别代码中的产品版本,从而根据版本启用逻辑决策。
使用PHP,解决此问题的最佳方法是什么?当然,完整版的特定代码不会出现在Lite版本的PHP文件中,否则精明的开发人员可能会轻松解锁这些功能。
答案 0 :(得分:2)
最好的方法是使用OOP。
例如,创建班级的基本版本:
class BasicComponent
{
... add basic functionality here
}
创建班级的扩展版本:
class FancyComponent extends BasicComponent
{
... add fancy stuff here
}
只部署基本版本或花哨版本。
为此目的,还有很多其他方法可以使用OOP。我可以想到一个可以实例化很多功能的工厂,其中每个功能都是一个类,并且只使用组件的基本版本部署其中一些功能。
答案 1 :(得分:0)
根据我在this similar question中找到的内容,我终于解决了这个问题:
1。我安装了Phing,一个基于Apache Ant的PHP项目构建系统或构建工具。
2。我创建了一个build.xml
文件,其中包含了这些目标:
<target name="preprocess" depends="prepare">
<foreach param="fname" absparam="abs-fname" target="preprocessfile">
<fileset dir="${build.dir}">
<patternset>
<include name="**/*.php"/>
</patternset>
</fileset>
</foreach>
</target>
<target name="preprocessfile">
<exec command="gcc -E -x c -P -C -D PREMIUM ${abs-fname} -Wno-invalid-pp-token -o ${abs-fname}"
escape="false"
checkreturn="true"
passthru="true" />
</target>
在实践中,我在每个PHP文件上启动GCC预处理器,我利用它来完成我所需要的。它运作得很好!
不仅仅是:通过Phing我创建了一些目标来进行PHP验证,JavaScript缩小,创建要部署的存档等等。