环境
- php5.2.6、apache2.2.8、mysql5.0.51b、xp(虚拟机)
- php5.3.5、apache2.2.17、mysql5.5.8、win7
实例
外部调用
1 2 3 4 5 6 7 8
| class ClassTest{ public $_publicT; protected $_protectedT; private $_privateT; }
$classT = new ClassTest(); var_dump(get_class_vars(get_class($classT)));
|
结果
两个环境下相同:
‘_publicT’ => null
内部调用
1 2 3 4 5 6 7 8 9 10
| class ClassTest{ pulblic $_publicT; protected $_protectedT; private $_privateT; public funciton getVars(){ var_dump(get_class_vars(get_class($this))); } } $classT = new ClassTest(); $classT->getVars();
|
结果
两个环境下相同:
‘_publicT’ => null
‘_protectedT’ => null
‘_privateT’ => null
###继承
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class ClassA{ public function getVars(){ var_dump(get_class_vars(get_class($this))); } } class ClassB extends ClassA{ public $_publicB; protected $_protectedB; private $_privateB; }
class ClassC extends ClassB{ public $_publicC; protected $_protectedC; private $_privateC; }
$classC = new ClassC(); $classC->getVars();
|
结果
环境1
‘_publicC’ => null
‘_publicB’ => null
环境2
‘_publicC’ => null
‘_protectedC’ => null
‘_publicB’ => null
‘_protectedB’ => null
结论
get_class_vars和get_object_vars用来获取类变量。
在类的外部使用,仅显示public;
在类的内部使用,显示所有的(public、protected、private);
方法放在父类,子类通过继承来调用:
在PHP5.2中仅显示public,而PHP5.3中会显示public和protected。