[PHP] PHP类实现类似final的功能 →→→→→进入此内容的聊天室

来自 , 2019-05-30, 写在 PHP, 查看 104 次.
URL http://www.code666.cn/view/c8862fc1
  1. class a {
  2.  
  3.     public $attr2 = 'a';
  4.     private $final_attr = '1';
  5.  
  6.     function __construct() {
  7.  
  8.         $vars = get_class_vars(get_class($this));
  9.         foreach($vars as $k => $val) {
  10.             if(substr($k,0,strlen('final_')) == 'final_') continue;
  11.             $v = 'final_'.$k;
  12.             if(isset($this ->$v )) {
  13.                 echo 'class : ' . get_class($this) . " Can't declare parent's attribute!";
  14.                 exit();
  15.             }
  16.         }
  17.     }
  18.  
  19.     function __set($attr,$val) {
  20.  
  21.         $v = 'final_'.$attr;
  22.         if(isset($this -> $v)) {
  23.             $this -> $v = $val;
  24.         }
  25.     }
  26.  
  27.     function __get($k) {
  28.  
  29.         $v = 'final_'.$k;
  30.         if(isset($this -> $v)) {
  31.             return $this -> $v;
  32.         }
  33.     }
  34. }
  35.  
  36. class b extends a {
  37.  
  38.     public $attr = 'b';
  39.  
  40.     function __construct() {
  41.         parent::__construct();
  42.     }
  43. }
  44.  
  45. $a = new b();

回复 "PHP类实现类似final的功能"

这儿你可以回复上面这条便签

captcha