【发布时间】:2021-11-04 09:17:07
【问题描述】:
在 PHP 中使用继承时,我很确定;子类不会根据其父类中定义的方法数量占用任何额外的内存。
但请考虑以下:
<?php
trait MyTrait {
private $myTraitVariable = NULL;
public function myTraitMethod() {
// A lot of logic here...
}
}
class MyClass1 {
use MyTrait;
}
class MyClass2 {
use MyTrait;
}
class MyClass3 {
use MyTrait;
}
$instance1 = new MyClass1();
$instance2 = new MyClass2();
$instance3 = new MyClass3();
// ...
$instance1->myTraitMethod();
// ...
与继承相比,现在使用 PHP 的 Trait 功能会导致 myTraitMethod 的逻辑占用 3 倍的内存吗?
(或者还有其他区别吗?)
【问题讨论】:
-
不确定你在问什么,即使你把那个方法放在你的基类中并让你的 myclass1,2,3 扩展它,它仍然会在内存中被调用 3 次。跨度>
-
前一阵子树this post 说,在多个类中使用一个特征时会有一些效率。
标签: php inheritance traits