【问题标题】:Override pear Package覆盖梨包
【发布时间】:2013-06-09 01:39:00
【问题描述】:

我在本地使用 Math_Finance pear 包。我对包中包含的一些文件进行了修改,这使我的计算工作。现在我将我的项目迁移到网络共享主机并要求安装相同的 pear 包。但是,我无法执行与本地相同的修改,因为它是共享主机。

我的问题是:有没有办法覆盖或只包含已修改的文件?我不想将包中的所有文件复制到我的 public_html 目录,但恐怕这是唯一的解决方案。

谢谢

【问题讨论】:

  • 如果这是一个修复,您可能需要为此发送一个补丁。如果只是新功能。为什么不使用您自己的类扩展 Math_Finance 并覆盖其中的特定功能?
  • @tlens 为什么不回答这个问题?覆盖是一个的主意!!

标签: php pear


【解决方案1】:

如果是错误修复,您可以发送补丁。如果只是增加功能。您可以通过扩展 Math_Finance 类来简单地覆盖它的某些功能。 (感谢@hek2mgl 的提示;)

Class Math_Finance {

   public function someMethod() {
      // original logic
   }

}

Class My_Math_Finance extends Math_Finance {

   public function someMethod() {
      // change some of the needed logic
   }

}

【讨论】:

  • 是的,在子类中覆盖错误或扩展功能是个好主意,除非原始包尚未修复! +1 :)
  • 在项目中包含 PEAR 文件也很好 :) 这就是我要做的方式。 ty 为 +1!
  • 作为 PEAR 社区的活跃成员,我强烈建议您将您的补丁上游分享给 PEAR QA 团队,因为不再积极维护 Math_Finance 包,尤其是在修复错误的情况下。要报告错误或请求此包的新功能,您可以通过pear.php.net/bugs/report.php?package=Math_Finance
【解决方案2】:

根据他们用于表示包含文件路径的方法,这可能有效。

假设原始文件在

/usr/local/share/php/PEAR/Statistics/Cool.php

在您的站点中镜像 PEAR 并将您的版本保存为

/mywebroot/library/PEAR/Statistics/Cool.php

然后将库目录的路径添加到包含路径中

ini_set("include_path", "/mywebroot/library".PATH_SEPARATOR.ini_get("include_path"));

现在包含您的版本时,将在 PEAR 之前找到。

【讨论】:

  • 修改 include_path 可能没有必要,但您必须确保需要 both 文件:Finance.phpFinance_FunctionParameters.php 来自 public_html 内的位置/跨度>
  • 这是最好的选择,扩展类还需要扩展其他类,如数值方法。谢谢
【解决方案3】:

我不想将包中的所有文件都复制到我的 public_html 目录但恐怕这是唯一的解决方案。

是的!这就是解决方案。但这有什么不好呢?我们正在讨论 2 个额外的 php 文件;):

Math/Finance.php
Math/Finance_FunctionParameters.php

将它们放在应用程序内的文件夹中,例如lib。然后确保您从该位置导入两个文件:

require_once 'lib/Math/Finance.php';
require_once 'lib/Math/Finance_FunctionParameters.php';

【讨论】:

  • 顺便说一句,很高兴看到你的补丁:)
  • 问题是 Math_Finance 还包含 Math_Numerical 类,而且数量很多
  • 好的,我明白了,然后@Orangepill 的建议:修改include_path,在这种情况下可能是一个很好的建议。你明白我的意思吗? (at)tlenss 的建议也很好(也许是最好的)
【解决方案4】:

我也遇到了 pear 问题,不得不更改以删除 pear 要求 - 这是原始 repo 中没有 pear 的分支

https://github.com/hashmode/Math_Finance

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2023-03-26
    • 2019-10-18
    • 2018-11-01
    • 2017-10-06
    相关资源
    最近更新 更多