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-06 19:44:12
靜態方法也是一個很好的實現,我認爲現在每天的OOP被誤用和誤解很多,我看過很多使用OOP的程序員,就像它是一個有很多函數的盒子一樣。 – 2013-05-06 19:48:38
我正在閱讀靜態方法。 – mrpatg 2013-05-06 19:54:55