【问题标题】:Managing project agnostic code libraries without creating dependencies在不创建依赖项的情况下管理与项目无关的代码库
【发布时间】:2023-04-06 10:10:01
【问题描述】:

我很想知道其他开发人员如何管理与项目无关的代码/库?

例如,给定这两个函数:

function array_exclude_keys(Array $array, Array $keys){
    foreach($keys as $key){
        unset($array[$key]);
    }
    return $array;
}

function array_order_to_assoc(Array $array){
    do{
        $return[current($array)] = next($array);
    }while(next($array));
    return !empty($return) ? $return : null;
}

这些有一个非常普遍的应用。在我目前正在进行的一个项目中,至少有两个地方需要array_exclude 功能,至少有一个地方需要array_order_to_assoc。我什至可以想到其他可以从这些语义上受益的项目。

现在,与其将它们写入必要类(非 DRY)的方法中,我可以简单地将它们修改为一个库,然后 include 项目中的那个库。但是,现在需要这些功能的类是完全依赖的。如果没有这种依赖关系,我在这个项目中的类实际上是“复制、粘贴、包含和实例化”,这就是我想要保留它们的方式。

我很想知道其他人是如何处理这种情况的。

【问题讨论】:

    标签: php dependencies dependency-management cross-language


    【解决方案1】:

    如果我正确理解您的问题,听起来您应该研究 php 的 spl_autoload 功能。

    这里有一个教程:http://www.phpro.org/tutorials/SPL-Autoload.html

    【讨论】:

    • 谢谢 vicTROLLA; 这不是我要说的,我已经在使用核心 __autoload() 进行自动加载(虽然 SPL 更强大,但它根本不是在这个项目中是必需的)这个项目中的一些类可以完全独立地运行,松散耦合也许是最好的。我的Router 是其中之一,但是需要上述功能,但其他类也需要。在我看来,我的选择是在每个类中重复必要的方法,或者将它们加载到外部库中。我只是对保持松散耦合的替代方案感到好奇。
    猜你喜欢
    • 2015-02-07
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    相关资源
    最近更新 更多