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'
声明:如需转载,请注明来源于www.webym.net并保留原文链接:http://www.webym.net/jiaocheng/828.html