200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > PHP中__get()和__set的用法分析

PHP中__get()和__set的用法分析

时间:2021-02-24 01:55:51

相关推荐

PHP中__get()和__set的用法分析

后端开发|php教程

php,分析,用法

后端开发-php教程

在PHP5中给我们提供了专门为属性设置值和获取值的方法,“__set()”和“__get()”这两个方法,这两个方法不是默认存在的,而是我们手工添加到类里面去的,像构造方法(__construct())一样,类里面添加了才会存在,可以按下面的方式来添加这两个方法,当然也可以按个人的风格来添加:

八字排盘系统源码,ubuntu配置蓝牙连接,tomcat不输入工程名,爬虫项目答辩,php读取代码,seo快排教程seolzw

//__set()方法用来设置私有属性 public function __set($name,$value){ $this->$name = $value; } //__get()方法用来获取私有属性public function __get($name) { return $this->$name; }

__get()方法:这个方法用来获取私有成员属性值的,有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值,这个方法不用我们手工的去调用,因为我们也可以把这个方法做成私有的方法,是在直接获取私有属性的时候对象自动调用的。因为私有属性已经被封装上了,是不能直接获取值的,但是如果你在类里面加上了这个方法,在使用“echo$p1->name”这样的语句直接获取值的时候就会自动调用__get($name)方法,将属性name传给参数$name,通过这个方法的内部执行,返回我们传入的私有属性的值。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。

钓鱼软件源码,vscode 换字体,设置ubuntu开机引导路径,如何启动 tomcat,sqlite查出了表头,3d轮播图插件下载,前端界面js开发框架,爬虫自动发布视屏,php 反序列,p2p seo,人才市场网站源码下载,网页邮件模版下载,java cms免费管理系统模板,wordpress未找到页面,php用户注册登录管理系统源码,wordpress程序 耗内存lzw

__set()方法:这个方法用来为私有成员属性设置值的,有两个参数,第一个参数为你要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值。这个方法同样不用我们手工去调用,它也可以做成私有的,是在直接设置私有属性值的时候自动调用的,同样属性私有的已经被封装上

深海捕鱼源码,arm开发板安装vscode,ubuntu 网络流量,tomcat发布项目url,sqlite时间相等,网页设计怎么设置标题,怎样远程连接到服务器上,layer 插件 懒人之家,前端拖拽控件框架,网上爬虫兼职,php分站,自学seo优化,springboot计算器,仿豆丁网站源码,网页聊天 源码,国外旅游网页模板,网站后台修改内容看不见了,flex 页面自动大小,帝国网站后台管理系统,小程序 电商 源码lzw

了,如果没有__set()这个方法,是不允许的,比如:$this->name=‘zhangsan’,这样会出错,但是如果你在类里面加上了__set($property_name, $value)这个方法,在直接给私有属性赋值的时候,就会自动调用它,把属性比如name传给$property_name,把要赋的值“zhangsan”传给$value,通过这个方法的执行,达到赋值的目的。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。为了不传入非法的值,还可以在这个方法给做一下判断。代码如下:

<?phpclass Person{//下面是人的成员属性,都是封装的私有成员private $name;//人的名子private $sex; //人的性别private $age; //人的年龄//__get()方法用来获取私有属性private function __get($property_name){echo "在直接获取私有属性值的时候,自动调用了这个__get()方法

";if(isset($this->$property_name)){return($this->$property_name);}else{return(NULL);}}//__set()方法用来设置私有属性private function __set($property_name, $value){echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值

";$this->$property_name = $value;}}$p1=newPerson();//直接为私有属性赋值的操作,会自动调用__set()方法进行赋值$p1->name="张三";$p1->sex="男";$p1->age=20;//直接获取私有属性的值,会自动调用__get()方法,返回成员属性的值echo "姓名:".$p1->name."

";echo "性别:".$p1->sex."

";echo "年龄:".$p1->age."

";?>程序

执行结果:

在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值

在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值

在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值

在直接获取私有属性值的时候,自动调用了这个__get()方法

姓名:张三

在直接获取私有属性值的时候,自动调用了这个__get()方法

性别:男

在直接获取私有属性值的时候,自动调用了这个__get()方法

年龄:20

以上代码如果不加上__get()和__set()方法,程序就会出错,因为不能在类的外部操作私有成员,而上面的代码是通过自动调用__get()和__set()方法来帮助我们直接存取封装的私有成员的。

php的魔术方法__get(),__set(),__call(),__callStatic()以及static用法详解

魔术方法__get()实例详解(php面向对象高级教学2)

PHP中__get()和__set()的用法实例详解_PHP教学

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。