在 Ruby 中,我有一个 DAO 类,该类由一个使管理连接更容易的类扩展,该类由一个表示和操作数据库中数据的类扩展,该类由另一个类进一步扩展。要使用动物比喻,它看起来像这样:
class Animal
...
end
class Mammal < Animal
...
end
class Feline < Mammal
...
end
class Cat < Feline
...
end
class Lion < Cat
...
end
...
在 PHP 中,__destruct当您销毁/删除一个类时会运行一个方法。如果该类扩展另一个类,您只需像这样添加parent::__destruct()到该类的__destruct方法中:
public function __destruct() {
// Clean up code for this class here
...
// Execute clean up code for Parent class
parent::__destruct();
}
我可以对除Animal. 由于它没有扩展任何内容,因此该parent::__destruct();行不再有效。
但是,据我了解,Ruby 的对象没有这样的方法。可以设置终结器,但我决定只放入一个cleanup我可以在想要销毁/删除类时调用的方法。在我将课程设置为nil.
然而,这提出了一个新问题。如果方法总是被命名cleanup并且我调用lion_instance.cleanup了 ,我假设它调用了Lion#cleanup. 那么如何让它cleanup在课堂上调用Cat,然后Feline在链上调用呢?
或者这是一个错误的方法,你有一个更好的主意?