-1

問題に適した設計パターンを選択することに少し混乱しています。これが私のコードです:

<?php

class Report_Journal ...
class Report_Recommendation ...
class Report_Customer ...

$type = "journal"; // value can also be "recommendation or customer"

?>

ここで、その特定のタイプの正しいオブジェクトを作成したいと思います。その場合、Report_Journal を意味します。ファクトリ パターンを考えていましたが、ファクトリについて気に入らないのは、その依存関係が注入されず、クラス内で定義されていることです。どのように問題を解決しますか? 前もって感謝します。

BR、クリス

4

2 に答える 2

1

工場のパターンは、私の観点からは正しいアプローチです。最初にを作成してinterface、これらすべての型の共通インターフェイスを定義し、それを使用して、そのクラスを使用するすべてのメソッドのパラメーター リストに配置する必要があります。

function blub(myInterface $obj) 

これは依存性注入に明示的に必要ですblub。必要なクラスを注入するためにメソッドが使用されると想像してください。myInterface3 つのオブジェクトはすべてメソッドから継承するblubため、それらすべてに適用されます。

最後に、次のようなファクトリ メソッドを作成できます。

function getInstance($objectType, $params){
    if (!class_exists($objectType)) {
        throw new Exception('Bad type');
    }
    $instance = new $objectType($params);
    return $instance;
}

(phpに基づいて)より深く見るには、そのブログ投稿を調べることができます

http://net.tutsplus.com/tutorials/php/understanding-and-applying-polymorphism-in-php/

于 2013-04-28T16:27:39.203 に答える
0

クラス名として変数を使用できます。これは PHP がインタープリター言語であるため可能です。

<?php
$class_name = "Report_" . ucfirst($type);
$object = new $class_name();
?>
于 2013-04-28T16:28:40.240 に答える