PHPは緩く型付けされた言語なので、DIPの原則をPHPにどのように適用できますか?
実用的な例をいただければ幸いです。
PHPは緩く型付けされた言語なので、DIPの原則をPHPにどのように適用できますか?
実用的な例をいただければ幸いです。
PHP 5では、関数とメソッドが「型付き」パラメーター(オブジェクト)を宣言できるようにする「型ヒント」が導入されました。ほとんどの場合、JavaからPHP5などの例を移植することは大きな作業ではありません。
本当に簡単な例:
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のクラスの場合と同じ方法で、関数間の依存関係を管理できます。