you*_*ana 5 php oop static traits
尽管特征是语言辅助的复制/粘贴,但特征中的静态属性如何在被类使用时不会失去其价值?让我们考虑下面的例子,
trait Test{
public static $var = 1;
public static function increment(){
self::$var ++;
var_dump(self::$var);
}
}
Test::increment();//2
class Test2{
use Test;
}
var_dump(Test2::$var);//2
Test2::increment();//3
Run Code Online (Sandbox Code Playgroud)
这种行为在子级扩展父级的继承中是正确的,因此子级使用父级静态变量,但根据应用复制和粘贴的特征,这如何工作和正确?
这是一个更新,增加了我的困惑的另一个原因,如果静态值保留给特定的上下文,如特定的类或函数,那么我如何能够使用来自不同上下文(新类)的静态属性的更新值. 我的意思是,如果 trait Test 的上下文被称为例如 Context1,而类 Test2 上下文被称为 Context2,我如何在另一个上下文中访问第一个上下文的保留值?这与我们理解的上下文方法背道而驰。
更新 3:所有这些混淆都取决于 use 关键字是在类中导入特征成员还是复制/粘贴?