首页 > 语言 > PHP > 正文

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

2024-09-04 11:43:57
字体:大 中 小
来源:转载
供稿:网友

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. { 
  4.  
  5.     //定义常量【自php5.3后】,一个常量是属于一个类的,而不是某个对象的 
  6.  
  7.     //不可改变的 
  8.  
  9.     const EVENT = 'const'; 
  10.  
  11.     static $event = 'static'; 
  12.  
  13.     public $eventPublic = 'public'; 
  14.  
  15.     private $eventPrivate = 'private'; 
  16.  
  17.     protected $eventProtected = 'protected'; 
  18.  
  19.     public function test() 
  20.  
  21.     { 
  22.  
  23.         //使用self访问类中定义的常量 
  24.  
  25.         echo self::EVENT.'<br/>'; 
  26.  
  27.         //同常量一样使用self 
  28.  
  29.         echo self::$event.'<br/>'; 
  30.  
  31.         //公共变量,受保护的变量,私密的变量通过$this访问 
  32.  
  33.         echo $this->eventPublic.'<br/>'; 
  34.  
  35.         //受保护的和私密的变量只能在当前类中访问 
  36.  
  37.         echo $this->eventPrivate.'<br/>'; 
  38.  
  39.         echo $this->eventProtected.'<br/>'; 
  40.  
  41.     } 
  42.  
  43.  
  44.  
  45.     //魔术方法 
  46.  
  47.     public function __get($name) 
  48.  
  49.     { 
  50.  
  51.         return $this->$name; 
  52.  
  53.     } 
  54.  
  55. } 
  56.  
  57.  
  58.  
  59. class One extends Demo 
  60.  
  61. { 
  62.  
  63.  
  64.  
  65.     public function testOne() 
  66.  
  67.     { 
  68.  
  69.         //可继承父级使用parent访问 
  70.  
  71.         echo parent::EVENT.'<br/>'; 
  72.  
  73.         echo parent::$event.'<br/>'; 
  74.  
  75.         //也可通过父类直接访问 
  76.  
  77.         echo Demo::EVENT.'<br/>'; 
  78.  
  79.         echo Demo::$event.'<br/>'; 
  80.  
  81.         //继承父级中的成员变量后,只能访问公共变量 
  82.  
  83.         //私有变量和受保护的变量不能在子类中访问 
  84.  
  85.         echo $this->eventPublic; 
  86.  
  87.     } 
  88.  
  89. } 
  90.  
  91. $obj_1 = new Demo; 
  92.  
  93. $obj_1->test(); 
  94.  
  95. echo "=================<br/>"; 
  96.  
  97. $obj = new One; 
  98.  
  99. $obj->testOne(); 

运行结果:

  1. const 
  2.  
  3. static 
  4.  
  5. public 
  6.  
  7. private 
  8.  
  9. protected 
  10.  
  11. ================= 
  12.  
  13. const 
  14.  
  15. static 
  16.  
  17. const 
  18.  
  19. static 
  20.  
  21. public 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表