PHP 类属性 类静态变量的访问

php的类属性其实有两种,一种是类常量,一种是类静态变量。两种容易引起混淆。

如同静态类方法和类实例方法一样,静态类属性和实例属性不能重定义(同名),但静态属性可以和类常量同名。

[html][/html] 

  1. <?php
  2. class test
  3. {
  4.   const constvar=’hello world’;
  5.   static $staticvar=’hello world’;
  6.   function getStaticvar(){
  7.      return self::$staticvar;
  8.   }
  9. }
  10. $obj=new test();
  11. echo test::constvar //输出’hello world’
  12. echo test::staticvar //出错,staticvar 前必须加$才能访问,这是容易和类常量(per-class常量)容易混淆的地方之一
  13. echo test::$staticvar //输出’hello world’
  14. $str=’test’;
  15. echo $str::$staticvar //出错,类名在这不能用变量动态化
  16. echo $str::constvar //出错原因同上
  17. //在类名称存在一个变量中处于不确定(动态)状态时,只能以以下方式访问类变量
  18. $obj2=new $str();
  19. echo $obj2->getStaticvar();
  20. ?>

标签