PHP魔术方法__GET、__SET使用实例


Posted in PHP onNovember 25, 2014

__get()

- 读取不可访问属性的值时,__get() 会被调用。

__set()

- 在给不可访问属性赋值时,__set() 会被调用。

<?php
/**

 * 清晰的认识__get() __set()

 */

class Example {

    

    //公有的属性

    public $public = 'pub' ;

    //受保护的 - 子类中该属性可用

    protected $protected = 'pro';

    //私有的 - 只能此类使用此属性

    private $private = 'pri';

    

    //当访问对象中的属性不存在或者非公有属性的时候自动加载__get()方法

    public function __get($name){

        return '调用__get()方法:'.$name;

    }

    

    //当给对象的一个属性赋值的时候如果该属性不存在或者是非公有属性则自动加载__set()方法

    public function __set($name,$value){

        echo "\nname:".$name.',value:'.$value."\n";

    }

}
$example = new Example;

echo '<pre>';

echo $example->public."\n";

echo $example->protected."\n";

echo $example->private."\n";

echo $example->other."\n";

echo '<hr>';

$example->public = 'lic';   //这个赋值成功所有没有显示

$example->protected = 'tec';

$example->private = 'vat';

$example->other = 'er';

echo '<br/>';

echo '打印 public 属性:'.$example->public;

结果如下:

pub

调用__get()方法:protected

调用__get()方法:private

调用__get()方法:other
name:protected,value:tec
name:private,value:vat
name:other,value:er
打印 public 属性:lic
PHP 相关文章推荐
文件上传程序的全部源码
Oct 09 PHP
php面向对象的方法重载两种版本比较
Sep 08 PHP
PHP 网页过期时间的控制代码
Jun 29 PHP
浅谈PHP变量作用域以及地址引用问题
Dec 27 PHP
php制作中间带自己定义图片二维码的方法
Jan 27 PHP
ThinkPHP CURD方法之limit方法详解
Jun 18 PHP
php中print(),print_r(),echo()的区别详解
Dec 01 PHP
php按单词截取字符串的方法
Apr 07 PHP
php 在字符串指定位置插入新字符的简单实现
Jun 28 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
Nov 04 PHP
Yii2框架可逆加密简单实现方法
Aug 25 PHP
Laravel实现短信注册的示例代码
May 29 PHP
php字符串截取函数用法分析
Nov 25 #PHP
浅谈ThinkPHP的URL重写
Nov 25 #PHP
ThinkPHP独立分组使用的注意事项
Nov 25 #PHP
php中in_array函数用法探究
Nov 25 #PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 #PHP
ThinkPHP提交表单时默认自动转义的解决方法
Nov 25 #PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
Nov 25 #PHP
You might like
论建造顺序的重要性
2020/03/04 星际争霸
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
PHP+ACCESS 文章管理程序代码
2010/06/21 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
javascript 多浏览器 事件大全
2010/03/23 Javascript
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
JSP跨iframe如何传递参数实现代码
2013/09/21 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
Vue匿名插槽与作用域插槽的合并和覆盖行为
2019/04/22 Javascript
js 解析 JSON 数据简单示例
2020/04/21 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
[42:20]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python 中文字符串的处理实现代码
2009/10/25 Python
python中实现将多个print输出合成一个数组
2018/04/19 Python
django admin 后台实现三级联动的示例代码
2018/06/22 Python
Django中提示消息messages的设置方式
2019/11/15 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
python读取图像矩阵文件并转换为向量实例
2020/06/18 Python
如何把python项目部署到linux服务器
2020/08/26 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
应聘英语教师求职信
2014/04/24 职场文书
终止或解除劳动合同及劳动关系的证明书
2014/10/06 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python
美元符号 $
2022/02/17 杂记
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL