【发布时间】:2016-08-04 21:27:19
【问题描述】:
既然 PHP 是一种松散类型的语言,那么如何在 PHP 中应用 DIP 原理呢?
非常感谢一个实际的例子。
【问题讨论】:
标签: php oop solid-principles dependency-inversion
既然 PHP 是一种松散类型的语言,那么如何在 PHP 中应用 DIP 原理呢?
非常感谢一个实际的例子。
【问题讨论】:
标签: php oop solid-principles dependency-inversion
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 是一个指导方针:
A.高级模块不应依赖于低级模块。两者都应该依赖于抽象。
B.抽象不应依赖于细节。细节应该取决于抽象。
不管天气如何,“模块”实际上是类、函数、模块(这些在 php 本身中不存在)、特征或其他任何东西都是相关的。
所以是的,您可以在 PHP 中使用 DIP。事实上,您无需编写类就可以在 PHP 中使用它!您可以像管理 DIP 下的类一样管理函数之间的依赖关系。
【讨论】: