19

在阅读了2008 年 11 月版 php|architect 杂志中讨论单元测试 ( phpUnit )、构建工具 ( Phing ) 和持续集成 ( Xinc ) 的“现代 PHP 工作流程”文章后,我受到启发,想要了解更多关于可用于 PHP 的工具,尤其是 Phing。

过去,我经常通过将实时站点作为 subversion 工作副本运行并简单地在生产机器上运行“svn update”来部署最新版本的代码来处理到生产服务器的部署。

你使用 PHP 代码的构建工具吗?您认为与直接从 subversion 部署相比,它们提供了哪些优势?我应该注意什么,或者我可能会遇到什么问题?

4

4 回答 4

7

我使用过 Phing 和 Ant 并且更喜欢后者。我最初选择 Phing 是因为它是用 PHP 编写的,但老实说它不像 Ant 那样成熟。最后,拥有一个拥有庞大社区的成熟构建系统更有价值。

用 Ant/Phing 完成的事情:

  1. 从基本结帐 loalize 到特定语言,确保存在依赖项(其他库、目录等)
  2. 如果你有它们,编译模板等
  3. 将目标数据库升级到所需的版本,具体取决于签出的代码版本
  4. 运行单元测试等
于 2009-03-08T08:39:29.487 回答
7

我在 Phing 中看到的一个大问题是它创建了一个不必要的间接层。PHP 是一种脚本语言,因此可以直接运行。Phing 对 XML 配置的使用不适合该语言:它确实提供了更具可读性的声明性配置,但代价是牺牲了该语言的任何灵活性。使用 Ant(该路线的灵感来源)是有意义的,因为 Java 没有那种灵活性,因为它的动态性较低并且需要编译。

不幸的是,我在 PHP 领域没有看到很多好的替代方案,并且与其他语言不同,构建工具不是必不可少的,也不是文化的一部分,因此另一个得到很好支持的选项的演变可能不会很快发生。

因此,我会坚持选择更接近 PHP在更积极地支持构建工具的文化中所能做的事情我通常使用Gradle根据您想使用哪种语言作弊, Rake也做得很好(可能还有其他类似的选项)。如果您喜欢这种类型的东西,您还应该权衡 Webdriver 支持之类的东西。否则,使用 PHP 和/或 BASH 创建轻量级解决方案应该涵盖所有内容,同时保持透明度

于 2012-10-16T12:13:50.830 回答
2

我看着Phing,它看起来非常棒。对于我正在从事的项目,我实际上使用的是Apache 的 Ant。我用它来做几件事:

  1. 合并和压缩 Javascript 和 CSS(使用YUI Compressor完成压缩
  2. 用生产配置文件替换标准配置文件(例如,将 config.php.production 重命名为 config.php)
  3. 删除不需要的文件(例如 ant 构建文件 build.xml)

我认为 Phing 比 Ant 更值得一看,因为它是原生的 PHP,这可能很好。此外,如果您所做的不仅仅是复制/移动文件,请在移动到生产环境时注意性能问题。我遇到了一个问题,YUI 压缩器在我的本地机器上运行良好,但在相对较小的 VPS 上却超级慢。

于 2009-03-08T07:28:38.347 回答
2

在我现在正在进行的一个项目中,我们使用phpUnderControl来运行测试并在出现问题时获得快速反馈。我们计划使用它来运行其他测试,例如一些用Watir编写的测试。

于 2009-03-08T15:55:07.880 回答