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 相关文章推荐
PHP 手机归属地查询 api
Feb 08 PHP
PHP新手NOTICE错误常见解决方法
Dec 07 PHP
php empty()与isset()区别的详细介绍
Jun 17 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
Apr 08 PHP
浅析PHP中strlen和mb_strlen的区别
Aug 31 PHP
PHP里的单例类写法实例
Jun 25 PHP
PHP中Trait及其应用详解
Feb 14 PHP
PHP实现验证码校验功能
Nov 16 PHP
Laravel多域名下字段验证的方法
Apr 04 PHP
PHP7引入的&quot;??&quot;和&quot;?:&quot;的区别讲解
Apr 08 PHP
使用PHP开发留言板功能
Nov 19 PHP
PHP Pipeline 实现中间件的示例代码
Apr 26 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
最省空间的计数器
2006/10/09 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
JQuery+Ajax无刷新分页的实例代码
2014/02/08 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
vue实现一拉到底的滑动验证
2019/07/25 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
JS精确判断数据类型代码实例
2019/12/18 Javascript
Openlayers显示地理位置坐标的方法
2020/09/28 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
Python写入数据到MP3文件中的方法
2015/07/10 Python
Python 多线程实例详解
2017/03/25 Python
python得到windows自启动列表的方法
2018/10/14 Python
Python小工具之消耗系统指定大小内存的方法
2018/12/03 Python
mac使用python识别图形验证码功能
2020/01/10 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
学生自我评语大全
2014/04/18 职场文书
片区教研活动总结
2014/07/02 职场文书
受伤赔偿协议书
2014/09/24 职场文书
婚内房产协议书范本
2014/10/02 职场文书
我对PyTorch dataloader里的shuffle=True的理解
2021/05/20 Python
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android
MySQL分区表实现按月份归类
2021/11/01 MySQL