现在的位置: 网页制作教程网站制作教程 >正文
php网上学习

public、protected、private、__get、__set

发表于2017/3/17 网站制作教程 0条评论 ⁄ 热度 986℃

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

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

private表示私有的,只有本类内部可以使用,在子类内也不可以访问。

父类的成员,无论是public、protected或private,在子类内都可以覆盖。但子类的访问权限必须高于或等于父类,即父类为protected,子类该成员必须为protected或public。访问权限public > protected > private。

__get($var):当访问private、protected或不存在的成员变量时,会调用该函数,public则不会。

__set($var, $val):第一个参数变量名,第二个参数变量值。当为private、protected或不存在的变量设置值时,会调用该函数,public则不会。

class T{
  private $a = 10;
  private $b = 100;
  protected $c = 1; 
  public function __get($n){
   echo $n;
  }
  public function __set($n, $v){
   echo $n . '-' . $v;
  } 
  public function usechild(){
   $this->show();
  } 
  public function getName(){
   return 'T';
  }
}
class M extends T{
  public $d = 1000;
  public function show(){
   echo $this->d . '-' . $this->c;
  } 
  public function getName(){
   return 'M'.parent::getName();
  }
} 
class N {
  public function getName(){
   return M::getName();
  }
}
// __get() __set()
$t = new T();
$t->a;                //'a'
$t->c = 'value';    // 'c-value'
// extends
$m = new M();
$m->usechild();        //1000-1
// overload
$n = new N();
echo $n->getName();    //'MT'
  • 暂无评论