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

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