区别PHP中的const,static,public,private,protected

const: 定义常量,一般定义后不可改变

static: 静态,类名可以访问

public: 表示全局,类内部外部子类都可以访问;

private: 表示私有的,只有本类内部可以使用;

protected: 表示受保护的,只有本类或子类或父类中可以访问;

定义常量也可用"define"定义。

const与define在定义常量时会有如下区别:

1. const用于类成员变量,一经定义不可修改,define用于全局常量,不可用于类成员变量的定义,const可在类中使用,define不能。

2. const定义的常量大小写敏感,而define可通过第三个参数(为TRUE表示大小写不敏感)来指定大小写是否敏感。

在运行时定义一个常量。define('TXE',100,TRUE);

3. const不能在条件语句中定义常量,而define函数可以。if($a>10){define('LE','hello');}

  1. class Demo
  2. {
  3. //定义常量【自php5.3后】,一个常量是属于一个类的,而不是某个对象的
  4. //不可改变的
  5. const EVENT = 'const';
  6. static $event = 'static';
  7. public $eventPublic = 'public';
  8. private $eventPrivate = 'private';
  9. protected $eventProtected = 'protected';
  10. public function test()
  11. {
  12. //使用self访问类中定义的常量
  13. echo self::EVENT.'<br/>';
  14. //同常量一样使用self
  15. echo self::$event.'<br/>';
  16. //公共变量,受保护的变量,私密的变量通过$this访问
  17. echo $this->eventPublic.'<br/>';
  18. //受保护的和私密的变量只能在当前类中访问
  19. echo $this->eventPrivate.'<br/>';
  20. echo $this->eventProtected.'<br/>';
  21. }
  22. //魔术方法
  23. public function __get($name)
  24. {
  25. return $this->$name;
  26. }
  27. }
  28. class One extends Demo
  29. {
  30. public function testOne()
  31. {
  32. //可继承父级使用parent访问
  33. echo parent::EVENT.'<br/>';
  34. echo parent::$event.'<br/>';
  35. //也可通过父类直接访问
  36. echo Demo::EVENT.'<br/>';
  37. echo Demo::$event.'<br/>';
  38. //继承父级中的成员变量后,只能访问公共变量
  39. //私有变量和受保护的变量不能在子类中访问
  40. echo $this->eventPublic;
  41. }
  42. }
  43. $obj_1 = new Demo;
  44. $obj_1->test();
  45. echo "=================<br/>";
  46. $obj = new One;
  47. $obj->testOne();

运行结果:

  1. const
  2. static
  3. public
  4. private
  5. protected
  6. =================
  7. const
  8. static
  9. const
  10. static
  11. public