php 魔术方法学习笔记

__get()  __set()    __isset()   __unset

__call   __callstatic

__call是调用不可见(不存在或者没权限)的方法时,自动调用。

$lisi->say(1,2,3)   对象中并不存在say 方法   __call("say",array(1,2,3))运行

__get()用来获取私有成员的属性值,有一个参数,参数传入你要获取的私有成员的属性名称,返回的是获取的值。该方法不用我们手工去调用,只需要封装在类里面就好了。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。如下代码

//__get()方法用来获取私有属性

class tian{
private $age=18;
public function __get($property_name)
{
if(isset($this->$property_name)){
return($this->$property_name);
}

}
}
$a=new tian();
echo $a->age;

如果要调用的私有属性存在,就会返回传递给私有属性的值,否则就为空
$a=new tian();
$a->age;此处会得到18,通过__get()魔术方法,使得在类的外部也能调用私有属性。
 
__set() 为私有属性赋值,有两个参数,一个参数是私有属性的名称,第二个参数是要给私有属性赋的值,没有返回值,同样也不需要我们手动去调用,是封装在类中的。
例如如下代码

class tian{
private $age=18;
public function __get($property_name)

if(isset($this->$property_name)){
return($this->$property_name);
}

}

public function __set($a,$v){
echo  $this->$a ;

}
}
$a=new tian();
echo $a->name="大傻逼";

如果成员属性不是私有的,也不会调用到该函数。

 

 

 

转载于:https://www.cnblogs.com/paddygege/p/6507550.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值