关于php:您使用Phing吗?

关于php:您使用Phing吗?

Do you use Phing?

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

我经常以为也许我们应该使用Phing。 我没有使用太多蚂蚁,所以除了对脚本将文件从一个地方复制到另一个地方进行脚本编写(就像我们的设置脚本所做的那样)之外,我对Phing应该做的事情没有真正的了解。 您可以提供一些更高级的用法示例,以帮助我理解为什么或不希望将Phing集成到我们的流程中?


来自Federico Cargnelutti的博客文章:

Features include file transformations (e.g. token
replacement, XSLT transformation,
Smarty template transformations), file
system operations, interactive build
support, SQL execution, CVS
operations, tools for creating PEAR
packages, and much more.

当然,您可以为上述所有内容编写自定义脚本。但是,使用像Phing这样的专用构建工具可以为您带来很多好处。您将使用经过验证的框架,因此您不必担心设置"基础结构",而可以专注于您需要编写的代码。使用Phing还可以使新成员加入您的团队时变得更加容易,如果他们以前使用过Phing(或Phing所基于的Ant),他们将能够了解发生了什么。


对我来说,有说服力的答案是phing可以理解PHP类路径。蚂蚁没有。我不想拥有一个完整的exec命令的ant build.xml文件。我碰巧主要是一名Java程序员,仍然使用phing。这是工作的最佳工具。


我从Ant移到Phing,只是因为它是PHP。我使用它从不同的Subversion仓库中导出,复制内容,构建不同的安装程序包,等等,所有这些都包含20行可重用的xml文件和包含项目特定内容的配置文件。我无法使用自定义脚本快速地做到这一点。我还计划集成api文档生成和单元测试。爱它!


我们使用phing部署SemanticScuttle:

  • 生成zip存档以进行分发
  • 创建PEAR包
  • 将zip上传到SourceForge
  • 使用新的软件包文件更新PEAR通道
  • 将reStructuredText文档渲染为html文件并上传。当前使用exec,但是我正在为其编写单独的任务。

通过rsync上传zip文件和频道,很遗憾,通过特殊任务进行phing不支持该方法-但始终可以使用exec并且效果很好。

最后,它节省了很多时间,并且我们能够使用一个命令来测试,打包和部署我们的应用程序(这使我们在Joel Test上有了另一点)。我不想没有它。

请参阅build.xml代码。


我看不出有什么令人信服的理由来进行网络钓鱼。我的意思是,PHP程序员是否应该"仅仅因为"用PHP编写Eclipse插件可能更容易而尝试重写Eclipse?我不这么认为。

Ant拥有更好的文档,其中包括一些不错的书,并且在Java领域中根深蒂固,因此可以避免以下问题:(1)"我们尚未将功能X复制到phing"和(2)风险phing项目的失败。这是一篇有关配置PHPUnit与ant和cruisecontrol一起使用的文章:并不难。而且您可以免费获得eclipse集成。

祝好运!


推荐阅读