0

Object1 と Object2 という 2 種類のオブジェクトがあります。これらのオブジェクトに CRUD 変更を加えるたびに、特別な「ステータス」テーブルに変更を記録します。各タイプのオブジェクトを処理するためのクラスを作成しており、ステータスを処理するようになりました。現在、ステータスデータがオブジェクトのタイプとともに渡される関数があり、必要なDB挿入を行いますが、これを何らかの方法でクラスに書き込みたいのですが、ベストプラクティスがわかりません.

ステータス用に 3 番目のオブジェクトを作成する必要がありますか?各オブジェクトに同じことを行うが異なるハードコードされた言葉遣いのコピー & ペースト メソッドを作成する必要がありますか? 両方のクラスを 3 番目のクラスに拡張して、両方にステータス メソッドを与えることはできますか?

この問題を考える最良の方法は、車とトラックのオブジェクトがあることです。Garage メソッドを作成する必要がありますが、それを車とトラックのオブジェクトのメソッドにするか、独自のオブジェクトにするか、または何をしますか?

4

1 に答える 1

-1

IMOH(間違っているかもしれません、私はそう確信しています)、それはこれを行う良い方法です:

abstract class Base{
    protected $type = null;
    public function setStatus($status){
        $sql = "UPDATE SET `status` = '$status' FROM `table` WHERE `type` = '{$this->type}'";
    }
}
class One extends Base{
    protected $type = "type1";
}
class Two extends Base{
    protected $type = "type2";
}

$one = new One();
$one->setStatus('pending');
$two = new Two();
$two->setStatus('died');

そして突然、野生の静的な方法が現れます

abstract class Base {
    protected static $type = null;
    public static function setStatus($status){
         $sql = sprintf("UPDATE SET `status` = '$status' FROM `table` WHERE `type` = '%s'",static::$type);
    }
}

class One extends Base{
    protected static $type = "one";
}

class Two extends Base{
    protected static $type = "two";
}

One::setStatus("idle");
Two::setStatus("dieing");
于 2013-05-06T19:40:09.020 に答える