php 魔术方法 get,PHP中魔术方法__get和__set的用法

PHP中,魔术方法有不少种,本文章给你们记录分享:__get\__set的用法跟理解php

首先,咱们得明白oop中的三个访问修饰符:public、protected、privateoop

分别的意思:this

一、公共的,任何地方均可以访问,包括本类,子类,外部code

二、受保护的成员属性或者方法,只能在本类或者子类中访问get

三、私有的,只能在本类中访问io

那么__get,__set就跟这修饰符存在跟很大的关系function

__get:当访问一个不是公开成员属性时被调用,一个不存在的属性被调用也会执行

__set:当给一个不是公开成员属性赋值时被调用,给一个不存在的属性赋值也会执行

看案例代码:class

class Car

{

protected $price = 300000;

}

/*

*魔术方法 __get

*@param pre_name 属性名称

*/

function __get($pre_name)

{

if(isset($this->$pre_name))

{

return $this->$pre_name;

} else

{

echo '此属性不存在';

}

}

/*

*当访问一个受保护的属性时 __get被调用

*此时经过魔术方法让外部也能够访问到

*/

$lexus = new Car();

echo $lexus->price; //输出300000

/*

*当访问一个不存在的属性时 __get也会被调用

*/

echo $lexus->types; //输出:此属性不存在

?>

这是一个车类,价格不是公开的,当某我的硬是要知道这辆雷克萨斯的价格时,能够用__get方法。方法

下面是__set分享

class Car

{

protected $price = 300000;

}

/*

*魔术方法 __set

*@param pre_name 属性名称 val 属性值

*/

function __set($pre_name,$val)

{

if(isset($this->$pre_name))

{

$this->$pre_name = $val;

} else

{

echo '此属性不存在';

}

}

/*

*当设置一个不公开的属性值时 __set被调用

*/

$lexus = new Car();

$lexus->price = 3000000;

/*

*当设置一个不存在的属性时 __set也会被调用

*/

$lexus->types = 'XFS'; //输出:此属性不存在

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值