0

我有两种类型的对象,分别称为 Object1 和 Object2。每当我对这些对象进行 CRUD 更改时,我都会将更改记录在一个特殊的“状态”表中。我正在写出处理每种类型对象的类,并开始处理状态。现在我有一个函数,状态数据与对象类型一起传递给它,然后它进行必要的数据库插入,但是我想以某种方式将它写入类中,并且不确定最佳实践。

我是否应该为状态创建第三个对象,我是否应该在每个对象中创建复制和粘贴方法来执行相同的操作但使用不同的硬编码措辞?我可以将两个类都扩展为第三类以赋予它们两个状态方法吗?

考虑这个问题的最好方法是我有一个 Car 和 Truck 对象。需要创建一个 Garage 方法,但我是让它成为 car 和 truck 对象的方法,还是它自己的对象,还是什么?

4

1 回答 1

-1

恕我直言(我可能错了,我确定我是),这是一个很好的方法:

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 回答