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与MySQL交互使用详解
Oct 09 PHP
动态新闻发布的实现及其技巧
Oct 09 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
May 17 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
Mar 08 PHP
ThinkPHP实现一键清除缓存方法
Jun 26 PHP
phpStudy访问速度慢和启动失败的解决办法
Nov 19 PHP
php使用number_format函数截取小数的方法分析
May 27 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
Sep 30 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
Oct 22 PHP
在 Laravel 中动态隐藏 API 字段的方法
Oct 25 PHP
Jsonp劫持学习
Apr 01 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
php中数字0和空值的区别分析
2014/06/05 PHP
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
JavaScript性能优化之小知识总结
2015/11/20 Javascript
对jQuary选择器的全面总结
2016/06/20 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
基于 Bootstrap Datetimepicker 联动
2017/08/03 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
js实现双色球效果
2020/08/02 Javascript
python logging类库使用例子
2014/11/22 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
python批量修改ssh密码的实现
2019/08/08 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
关于pytorch处理类别不平衡的问题
2019/12/31 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
写一个方法1000的阶乘
2012/11/21 面试题
利用异或运算实现两个无符号数的加法运算
2013/12/20 面试题
大学生应聘推荐信范文
2013/11/19 职场文书
省委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
雾霾停课通知
2015/04/24 职场文书
辞职离别感言
2015/08/04 职场文书
Python实现老照片修复之上色小技巧
2021/10/16 Python