你使用Phing吗?

25

有没有人使用Phing来部署PHP应用程序?如果有,你是如何使用它的?我们目前有一个手写的 "setup" 脚本,每当我们部署一个新的项目实例时都要运行它。我们只需从SVN检出并运行它。它设置一些基本配置变量,安装或重新加载数据库,并为站点实例生成虚拟主机。

我经常想也许我们应该使用Phing。我没有太多使用ant的经验,所以我不知道Phing除了像我们的设置脚本那样脚本化将文件从一个地方复制到另一个地方外还应该做什么。你能给出一些更高级的用法示例帮助我理解为什么我们会或不会想要将Phing集成到我们的流程中吗?

5个回答

16

来自Federico Cargnelutti的博客文章

功能包括文件转换(例如标记替换、XSLT转换、Smarty模板转换)、文件系统操作、交互式构建支持、SQL执行、CVS操作、创建PEAR包的工具等。

当然,你可以为上述所有内容编写自定义脚本。但是,使用像Phing这样的专业构建工具会带来许多好处。您将使用经过验证的框架,因此无需担心设置“基础架构”,而可以专注于需要编写的代码。使用Phing还会使新成员加入您的团队变得更容易,如果他们之前使用过Phing(或者Phing所基于的Ant),他们将能够理解正在发生的事情。


8

对我来说,最有说服力的答案是phing理解PHP类路径。而Ant则不行。我不想在ant build.xml中充满exec命令。我主要是Java程序员,仍然使用phing。这是完成任务的最佳工具。


2
对于使用ANT执行PHP脚本,你只需要在PHP脚本的顶部添加“#!/usr/local/bin/php”(或者你的php可执行文件的位置),然后像执行任何Linux命令行操作一样从ANT中调用该脚本。你可以通过这种方式解决包括来自PHP的SQL命令在内的任何自定义代码操作。 - user560458

7

我之所以从Ant转向Phing,只是因为它是PHP。我使用它从不同的Subversion存储库中导出,复制文件,构建不同的安装包等等,所有这些都可以通过一个20行可重用的XML文件和一个包含项目特定信息的配置文件来完成。如果使用自定义脚本,我绝对无法如此快速地完成这些操作。我还计划集成API文档生成和单元测试。非常喜欢它!


3
我们使用phing来部署SemanticScuttle
  • 生成用于分发的zip归档文件
  • 创建PEAR
  • 上传zip到SourceForge
  • 使用新的包文件更新PEAR渠道
  • 将reStructuredText文档呈现为html文件并上传。目前使用exec,但我正在编写一个单独的任务
通过rsync上传zip文件和渠道,但不幸的是,phing没有通过特殊任务支持它-但始终可以使用exec并且效果很好。
最终,这节省了很多时间,我们能够使用一个单一的命令来测试、打包和部署我们的应用程序(这让我们在Joel Test上又得到了一个分数)。我不想没有它而生活。
查看build.xml代码

2
我不认为有什么强制性的理由选择Phing。我的意思是,PHP程序员是否应该尝试重写Eclipse,仅仅因为用PHP编写Eclipse插件可能更容易?我不这样认为。
Ant拥有更好的文档,包括一些不错的O'Reilly书籍,并且在Java领域中已经得到了很好的建立,因此您可以避免(1)“我们还没有将X功能复制到Phing”和(2)Phing项目停滞的风险。这里是一篇关于如何配置PHPUnit与Ant和CruiseControl一起工作的文章:并不难。而且你还可以免费获得Eclipse集成。
祝你好运!

5
重写 Eclipse 或许不是最好的主意,但将 Ant 移植到 PHP 中却是个好主意。原因很简单:自定义任务可以用普通的 PHP 完成(并不是每个人都精通 Java)。构建应用程序时,往往需要自定义功能以便自动化处理,并且在您熟练掌握的编程语言中实现这一点将被认为是一个巨大优势。附注:如果您正在使用 Java,则可能应该考虑 Maven :)) - Victor Farazdagi
Ant的文档不如Phing的好。是的,Phing的文档缺少更多的示例,但Ant的也是如此。 - cweiske
您不必在PHP中重写ANT以构建自定义任务。您所需要的应该是一个适配器任务或编译器,它允许您从ANT执行PHP脚本。 - Dennis C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接