魔术方法(1):__get() 和 __set()

本文深入浅出地介绍了PHP中的魔术方法,重点讲解了__get()和__set()的作用及应用场景,帮助开发者理解如何利用这些特性增强代码灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我希望我能够很用很简单的文字,而又很详细地说明白PHP中的魔术方法的特性,这是一件很难的事情,却并非无法办到。当然,目前对我来说,可能确实无法办到。但那并不代表,我不能去尝试。

为什么要使用魔术方法?

如果你不想更改当前软件代码的习惯或者开发方式,比如在代码中使用了大量的:$obj->var之类格式的代码,又如作为框架的建立者,希望业务开发者在自己代码的基础上开发逻辑的时候,能够不学习任何该框架特有的开发模型,仅仅是基于原有代码风格就可以开发应用,那么魔术方法可以帮助你完成心愿。

__get()和__set()

当在代码中调用:$obj->var时,如果在$obj所实例化的类中,不存在public $var属性时,那么,根据被调用的特性,__get()和__set()会被调用。

class a { private $_data = array(); function __set($k, $v){ $this->_data[$k] = $v; } function __set($k, $v){ if(isset($this->_data[$k])){ return $this->_data[$k]; } return null; } } $a = new a(); $a->m = ’123556′; print $a->m;

适用范围

从语法的角度说,并非所有的情况都适用。如果在类中已经存在外部可以访问的:$obj->var,那么就不会调用__set()和__get()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值