【发布时间】:2017-02-27 21:54:04
【问题描述】:
我有点糊涂了,好久,我都是这样使用PHP类的:
class A {
private $temp;
public function __construct() {
for($i=0; $i<=300000; $i++) { $this->temp[ $i ] = "Nedzad Alibasic"; }
}
}
然后是另一个在构造中包含参数的类,我会将 A 类作为声明的模型传递:
class B {
private $a;
public function __construct($a) { $this->a = $a; }
}
一切都很好,我可以很容易地通过$b->a->somefunction(); 引用class A,但在我看来,当我将 A 类分配给 B 时,我会收取额外的内存,因为我通过了整个类? 但是我怎么看呢,传递类和扩展类几乎没有区别?
我的意思是,在内存几乎没有差异的情况下,我为什么要从这种方式切换到class B extends A { /** code **/ }?
或者还有其他有用的东西我可以与扩展一起使用,但不能在传递类中作为参数使用。
最好的问候。
【问题讨论】:
-
扩展A会在A的基础上创建一个全新的类B。如果你传递A,它不会创建一个新版本的A,而是使用现有的实例作为参考。如果您随后将 A 传递给另一个类,例如 C,则 B 和 C 都将使用相同的 A 实例。因此,您采用哪种方式,取决于您的需要。
-
我对自己的方式更满意,我想就是这样。我只需要确认我没有遗漏任何东西:D