gpt4 book ai didi

php - 如何使 PHP 库松耦合?

转载 作者:行者123 更新时间:2023-12-04 05:01:23 25 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




9年前关闭。




我的“框架”中有一些库,例如路由、配置、记录器……我希望它们彼此独立,就像一些众所周知的 PHP 框架一样。

我了解松散耦合的所有原则,但我不知道如何同时遵循松散耦合和 DRY 原则。如果我制作配置和记录器的路由库,那么我不会重复自己,但如果我想单独使用路由器,它将无法工作。同样,如果我将日志记录和配置代码写入我的路由库,我会重复自己。

最佳答案

松散耦合通常意味着您的组件不需要具体实例,而只需要一个具有兼容接口(interface)的实例。

然后,每个协作者都可以替换为相同类型的不同协作者。该代码不再依赖于其中之一的具体实现。

所以:

  • 不使用:
  • 全局(静态)函数
    Foo:bar();
  • 基于类的编程(传递类名)
    stream_wrapper_register("var", "VariableStream");
  • 全局常量
    if ( !defined('ABSPATH') )   
    define('ABSPATH', dirname(__FILE__) . '/');
  • 但:
  • 使用对象
    $foo->bar();
  • 针对接口(interface)编程
    public function __construct(LoggerInterface $logger) {
  • 使用模拟进行单元测试
    $logger = $this->getMock('LoggerInterface', array('log'));

  • 另见:
  • Don't be STUPID: GRASP SOLID! (Dec 2011; by NikiC)
  • 关于php - 如何使 PHP 库松耦合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16118128/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com