当前位置: 首页 > 后端技术 > PHP

php修饰符和魔法方法(基础)

时间:2023-03-29 14:22:59 PHP

PHP中一共有三种访问修饰符,可以分别用在类的属性和方法上(类的属性和方法统称为类的成员),用于修饰访问类成员的权限public(public,default)protected(subjecttoProtected)private(私有)php常用魔术方法:__construct(),__destruct(),__call(),__callStatic(),__get(),__set(),__isset(),__unset(),__invoke(),__clone()在下面的例子中展示用法classTest{private$a='a';保护$b='b';公共$c='c';publicfunction__set($name,$value){//TODO:实施__set()方法。}publicfunction__get($name){//TODO:实施__get()方法。}publicfunction__construct(){echo'开始构建!';}publicfunction__destruct(){echo'开始破坏!';}publicfunction__invoke(){echo'尝试调用!';//TODO:实施__invoke()方法。}publicfunction__isset($name){//TODO:实施__isset()方法。}privatefunctionget1(){var_dump('privategeta:'.$this->a."\r");var_dump('私有获取乙:'。$this->b。"\r");var_dump('privategetc:'.$this->c."\r");}protectedfunctionget2(){var_dump('protectedgeta:'.$this->a."\r");var_dump('protectedgetb:'.$this->b."\r");var_dump('protectedgetc:'.$this->c."\r");}publicfunctionget3(){var_dump('publicgeta:'.$this->a."\r");var_dump('publicgetb:'.$this->b."\r");var_dump('publicgetc:'.$this->c."\r");}}调用测试方法$t=newTest();$吨(123);//调用invoke$t->get3();//公共方法可以调用所有变量//publicgeta:a//publicgetb:b//publicgetc:c//__set和__get魔术方法使用,如果没有定义,那么私有属性$a将不会被操作//$t->a='123';//echo$t->a;//$t->get1();//private方法外面不能调用//$t->get2();//受保护的方法不能在类Test2extendsTest之外调用{//private$b='';//报错,子类继承修饰符级别不能低于Parentclassprotected$b;//okorpublic$bprivatefunctionget1(){var_dump('Test2privategeta:'.$this->a."\r");//报错,私有变量不能被继承var_dump('Test2privategetb:'.$this->b."\r");var_dump('Test2privategetc:'.$this->c."\r");}publicfunctionget2()//继承时修改访问权限{//var_dump('geta:'.$this->a."\r");//报错,私有变量不能被继承var_dump('Test2public得到b:'.$this->b."\r");var_dump('Test2publicgetc:'.$this->c."\r");}publicfunctionget3(){//var_dump('geta:'.$this->a."\r");//错误,私有变量不能被继承var_dump('Test2publicgetb:'.$this->b."\r");var_dump('Test2publicgetc:'.$this->c."\r");}}$t2=newTest2();$t2->get3();$t2->get2();//protected方法不能在外面调用,修改为public后可以使用//$t2->get1();//私有方法不能被外部调用