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 htmlentities和htmlspecialchars 的区别
Aug 18 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
Nov 02 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
Mar 11 PHP
163的邮件用phpmailer发送(实例详解)
Jun 24 PHP
php中通过curl检测页面是否被百度收录
Sep 27 PHP
ThinkPHP的L方法使用简介
Jun 18 PHP
PHP实现上传文件并存进数据库的方法
Jul 16 PHP
php解析url并得到url中的参数及获取url参数的四种方式
Oct 26 PHP
浅谈PHP无限极分类原理
Mar 14 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 PHP
laravel withCount 统计关联数量的方法
Oct 10 PHP
phpinfo的知识点总结
Oct 10 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 星际争霸
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
2018/01/15 PHP
尽可能写&quot;友好&quot;的&quot;Javascript&quot;代码
2007/01/09 Javascript
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
2019/01/18 jQuery
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
Python操作csv文件实例详解
2017/07/31 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
python如何建立全零数组
2020/07/19 Python
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
某公司面试题
2012/03/05 面试题
运动会解说词50字
2014/01/18 职场文书
银行竞聘演讲稿
2014/05/16 职场文书
汽车广告策划方案
2014/05/31 职场文书
工作经历证明书范文
2014/11/02 职场文书
tensorboard 可视化之localhost:6006不显示的解决方案
2021/05/22 Python