php中类方法的访问权限有哪几种
本文小编为大家详细介绍“php中类方法的访问权限有哪几种”,内容详细,步骤清晰,细节处理妥当,希望这篇“php中类方法的访问权限有哪几种”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
php中类方法的访问权限有三种:1、公有类型(public),在类的内部、子类中或者类的外部都可以使用,不受限制;2、受保护类型(protected);3、私有类型(private),只能在类的内部使用,在类的外部或子类中都无法使用。
本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑
类中的成员方法
在类中定义的函数被称为成员方法。函数和成员方法唯一的区别就是,函数实现的是某个独立的功能,而成员方法是实现类中的一个行为,是类的一部分。
可以在类中声明多个成员方法,成员方法的声明和函数的声明完全一样,只不过在声明成员方法时可以在function关键字的前面加一些访问权限修饰符来控制访问权限,例如 public、private、protected 等。
方法的访问权限
有三种访问权限分别是:
public:公有类型,在类的内部、子类中或者类的外部都可以使用,不受限制
特点:外部可调用,内部可调用,子类可调用
在子类中可以通过self::var调用public方法或属性,parent::method调用父类方法
在实例中可以能过$obj->var 来调用 public类型的方法或属性
protected:受保护类型,在类的内部和子类中可以使用,但不能在类的外部使用
特点:外部不可调用 ,内部可调用 子类可以调用
在子类中可以通过self::var调用protected方法或属性,parent::method调用父类方法
在实例中不能通过$obj->var 来调用 protected类型的方法或属性
private:私有类型,只能在类的内部使用,在类的外部或子类中都无法使用。
特点:外部不可调用 ,内部可调用,子类不可调用
该类型的属性或方法只能在该类中使用,在该类的实例、子类中、子类的实例中都不能调用私有类型的属性和方法
说明:
在创建方法时,如果没有指明,默认均为public。
<?php class EMBA_student // 声明EMBA学生类 { //用private来定义私有类的属性 private $no; //序号 private $name; // 姓名 private $gender; //性别 private $age; //年龄 //方法 //方法1 ,私有方法,输出年龄 private function show_age() { echo"我的年龄是:$this->age<br />"; }//方法2,公有方法,回答年龄public function ask_age(){ $this->show_age(); }//方法3,设置数据function set_data($arr){ $this->no=$arr["no"]; $this->name=$arr["name"]; $this->gender=$arr["gender"]; $this->age=$arr["age"]; } } //实例化一个对象 $s=new EMBA_student; $arr=array("no"=>"1","name"=>"Qian Zhang","gender"=>"Female","age"=>"33","department"=>"商业营销"); $s->set_data($arr);//echo $s->age;//Fatal error: Cannot access private property EMBA_student::$age in C:\xampp\htdocs\v\v.php on line 47//$s->show_age(); //Fatal error: Call to private method EMBA_student::show_age() from context '' in C:\xampp\htdocs\v\v.php on line 48 $s->ask_age(); ?>
结果:
我的年龄是:33
补:self 和 parent 的区别
a).在子类中常用到这两个对像。他们的主要区别在于self可以调用父类中的公有或受保护的属性,但parent不可以调用
b).self:: 它表示当前类的静态成员(方法和属性) 与 $this 不同,$this是指当前对象
读到这里,这篇“php中类方法的访问权限有哪几种”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341