我想知道以下两种方法中哪种更有效,或者因为开销很小,所以选择哪种方法实际上是否无关紧要。
从本质上讲,最好实例化一个您将要在父类中经常使用的类(例如,“ Db”),并在想要使用“ Db”时简单地扩展该父类,或者最好在要使用它的类的构造函数中分别实例化“ Db”。
显然,避免重复代码的最佳途径是在父类中实例化它,但出于好奇,我想知道是否有人对这些服务器对服务器的影响有多重要两条路线。
路线1:
// Parent
class template {
public function __construct() {
$this->db = new Db();
}
}
// Child
class login extends template {
public function __construct() {
// Has access to $this->db
}
}
路线2:
class login {
public function __construct() {
$this->db = new Db();
}
}
谢谢。
答案 0 :(得分:1)
性能无关紧要。
如果扩展模板类,则仍然必须实例化子类,而子类又将隐式调用父类的构造函数。这意味着在两种情况下,都将实例化DB类。更糟糕的是,扩展类可能会慢一些,因为它增加了额外的函数调用(父构造方法的调用)的开销。
话虽如此,我强烈建议您仔细阅读有关继承的内容。亲子关系在那里执行“是”关系。如果您只是出于性能原因而开始扩展同一课程,那么以后您可能会一头雾水。对于大多数程序员来说,让不相关的类从同一个父类中扩展出来,这简直是意外的行为。