【问题标题】:Creating Shared libraries in PHP在 PHP 中创建共享库
【发布时间】:2011-04-06 17:00:16
【问题描述】:

我正在处理一些基于 php 的项目,并且遇到了必须使用通用代码维护单独的代码库的问题。所有项目之间共享的公共代码是物理添加的(文件复制到文件夹中),当需要更改时,我们必须手动复制每个项目中公共代码功能中的修复。

在 java 中,我们可以创建一个库(jar 文件)并在不同的项目之间共享它。 PHP 5 中是否有任何与共享库相关的概念。

【问题讨论】:

    标签: php libraries code-reuse


    【解决方案1】:

    PHP 的 jar 版本称为 Phar: http://php.net/manual/en/book.phar.php

    【讨论】:

      【解决方案2】:

      将共享代码签入版本控制存储库并将其签出到项目中不是更容易吗?例如,SVN 支持 svn:externals property

      【讨论】:

      • 好吧,对不起,我从来没有更新过这个帖子,我实际上是使用 svn:external 属性来完成的
      【解决方案3】:

      虽然 PHP 现在支持 phar 文件,但解决问题的正确方法是有效地使用包含文件(和路径)。

      始终以相同的顺序搜索文件的包含路径 - 所以一个好的做法是定义 2 个层次结构,一个用于代码范围(例如,所有内容、应用程序、模块),另一个用于它所在的环境正在运行(保存相关 URL、数据库连接等,例如一切、环境(开发/测试/实时)、集群节点)

      C.

      【讨论】:

        【解决方案4】:

        我也一直在思考同样的问题。这里有一些想法。

        方法

        1:将包含路径设置为所有项目中的一个共享文件夹。如果您在编写/修改库时注意向后兼容性,它不应该破坏任何东西。但是,是的,这是非常冒险的,因为如果您确实破坏了某些东西,那么您的所有项目都会破坏它。

        2:创建一个包含在您的库中的简单更新脚本,将文件从主源复制到您的项目。更新库时运行此脚本。

        3:使用版本控制设置。 Git 子模块可能会工作 (http://book.git-scm.com/5_submodules.html)

        4:我想尝试 Phar 文件。唯一的缺点是它们不适用于低于 5.3 的 PHP 版本

        更新:2011 年 4 月 12 日 - 我建议使用方法 #3。现在我已经使用了一段时间,这显然是最佳实践。

        【讨论】:

        • 好吧,对不起,我从未更新或关闭此线程,我实际上使用 svn:external 属性来完成此操作。所以现在我只是在其他项目中引用图书馆项目,如果我改变一个,它会在所有项目中改变
        • 我一直在使用上面的方法#3 和 Git 子模块。 (我相信 svn:external 在 SVN 中是等价的)。我确信这是要走的路。
        猜你喜欢
        • 2018-10-26
        • 2012-12-19
        • 1970-01-01
        • 2016-03-03
        • 1970-01-01
        • 1970-01-01
        • 2018-02-27
        • 1970-01-01
        相关资源
        最近更新 更多