此文章作者是nightsailer
这几天在将我的doggy框架移植到PHP5的时候发现了一些小问题,主要是PHP5的static的实现上和其他的OO语言有很大的不同。
先看一部分代码
class A{
protected static $v='A';
public static function getV(){
return self::$v;
}
public static function setV($v){
self::$v=$v;
}
}
class B extends A{
protected static $v='B';
}
class C extends B{
protected static $v='C';
}
echo 'A::getV '.A::getV();
echo 'B::getV '.B::getV();
echo 'C::getV '.C::getV();
class A{
protected static $v='A';
public static function getV(){
return self::$v;
}
public static function setV($v){
self::$v=$v;
}
}
class B extends A{
protected static $v='B';
public static function getV(){
return self::$v;
}
}
class C extends B{
protected static $v='C';
}
echo 'A::getV '.A::getV();
echo 'B::getV '.B::getV();
echo 'C::getV '.C::getV();
class A{
protected static $v='A';
public static function getV(){
return self::$v;
}
public static function setV($v){
self::$v=$v;
}
}
class B extends A{
protected static $v='B';
public static function getV(){
return self::$v;
}
public static function setV($v){
self::$v=$v;
}
}
class C extends B {
protected static $v='C';
}
A::setV('C');
B::setV('D');
C::setV('E');
echo 'A::getV '.A::getV();
echo 'B::getV '.B::getV();
echo 'C::getV '.C::getV();