【问题标题】:Dependency Inversion Principle in PHPPHP中的依赖倒置原则
【发布时间】:2016-08-04 21:27:19
【问题描述】:

既然 PHP 是一种松散类型的语言,那么如何在 PHP 中应用 DIP 原理呢?

非常感谢一个实际的例子。

【问题讨论】:

    标签: php oop solid-principles dependency-inversion


    【解决方案1】:

    PHP 5 引入了“类型提示”,它使函数和方法能够声明“类型化”参数(对象)。在大多数情况下,移植示例应该不是一项大任务,例如从 Java 到 PHP 5。

    一个非常简单的例子:

    interface MyClient
    {
      public function doSomething();
      public function doSomethingElse();
    }
    
    class MyHighLevelObject
    {
      private $client;
    
      public __construct(MyClient $client)
      {
        $this->client = $client;
      }
    
      public function getStuffDone()
      {
        if ( any_self_state_check_or_whatever )
          $client->doSomething();
        else
          $client->doSomethingElse();
      }
    
      // ...
    }
    
    class MyDIP implements MyClient
    {
      public function doSomething()
      {
        // ...
      }
    
      public function doSomethingElse()
      {
        // ...
      }
    }
    

    【讨论】:

    • 实际上这个答案并不完整,也不完整,也没有回答主要问题。 DIP 与语言中的强类型无关。
    • 这是一个更好的解释:stackoverflow.com/questions/18562752/…
    • 我认为这很好。 MyHighLevelObject 不知道 MyDIP(具体),只知道 MyClient(抽象)。
    【解决方案2】:

    DIP 是一个指导方针:

    A.高级模块不应依赖于低级模块。两者都应该依赖于抽象。

    B.抽象不应依赖于细节。细节应该取决于抽象。

    不管天气如何,“模块”实际上是类、函数、模块(这些在 php 本身中不存在)、特征或其他任何东西都是相关的。

    所以是的,您可以在 PHP 中使用 DIP。事实上,您无需编写类就可以在 PHP 中使用它!您可以像管理 DIP 下的类一样管理函数之间的依赖关系。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-08
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多