在项目之间共享自定义 PHP 代码的最佳方式

Posted

技术标签:

【中文标题】在项目之间共享自定义 PHP 代码的最佳方式【英文标题】:Best way to share custom PHP code amongst projects 【发布时间】:2011-10-16 23:47:50 【问题描述】:

我正在开发一个分布式环境,主要是在 php 中。 我拥有的许多项目共享一些相同的代码。例如我的日志代码(基于 log4php,但有一些自定义添加)。

我可以在每个项目中复制粘贴这段代码,但很自然,如果我更改其中的任何内容,我需要将它重新粘贴到任何地方,并且“希望”它不会改变任何内容。 显然不是一个好办法。

现在,我想知道:共享此代码的最佳和最简单的方法是什么? 我希望有像制作自己的类似 PEAR 的私人频道一样简单的事情吗?人们会为这个用例这样做吗?还是有更简单的方法?我宁愿不从相互依赖的存储库等开始。如果重要的话,我会使用 Mercurial 进行版本控制。

谢谢大家。

【问题讨论】:

将使用 Jens Struwe 描述的方法,以及 linepogl 告诉我的 Mercurial 子存​​储库。谢谢大家! 【参考方案1】:

为此使用 Git 或 Mercurial。在这两者中,您都可以创建子模块或子存储库。

http://kernel.org/pub/software/scm/git/docs/git-submodule.html

https://www.mercurial-scm.org/wiki/Subrepository

【讨论】:

谢谢,在 Mercurial 中还不知道子存储库的概念。【参考方案2】:

也许最好的方法(我也在使用)是将通用代码托管在 Git、Mercurial 或 SVN 等版本控制系统中,并在每个相关项目中签出此代码。只要这样的项目没有更新,您就可以继续处理您的公共代码。如果您想再次接触使用公共代码的项目,您需要执行源代码更新或拉取。然后根据公共源码库的变化更新你的项目源码。

【讨论】:

在我看来,这与 genesis 关于 include_path 的建议相结合是要走的路。使用 Git,你甚至可以使用子模块,不知道 'bout HG 可能是,但您可能会使用来自不同机器的代码。此外,不同的项目可能使用不同版本的通用代码,因此您可能需要存储库的多个副本。 您可以使用 Git 或 SVN 轻松实现这一目标。我相信您可以告诉 git submodule 您想要哪个确切的提交,并且使用 SVN,您也可以将 svn:externals 与特定的提交一起使用。这样你就可以使用你想要的代码版本,我相信 HG 也有这方面的东西。 非常感谢您的快速回复。但是,创建自己的(可能是私有的)PEAR 通道并在那里发布组件不是更简单吗?我不确定这是否可能。但实际上,为这些组件提供自己的存储库可能是最好的解决方案。 我不会使用这个 PEAR 的主要原因是使用版本控制工具被更广泛地接受和更好地记录。【参考方案3】:

include_path PHP 指令怎么样?

只需添加include_path,例如/usr/share/php5/

并在每个项目中包含您的文件,例如 yourfile.php

【讨论】:

感谢您的建议,这对某些人来说可能是一个不错的选择。不过对我来说不是真的,很难看到这种规模。

以上是关于在项目之间共享自定义 PHP 代码的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

在包含应用程序和自定义键盘的 iOS8 之间共享图像

为自定义 Laravel 包提供数据的最佳方式是啥?

在 Flutter 中的小部件之间传递数据的最佳方式

PHP中日志自定义异常的最佳实践

如何使用自定义 html 消息在出错时退出 php

NSKeyedArchiver 并在目标之间共享自定义类