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 30 PHP
PHP页面间参数传递的四种方法详解
Jun 09 PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 PHP
PHP函数strip_tags的一个bug浅析
May 22 PHP
Ubuntu12下编译安装PHP5.3开发环境
Mar 27 PHP
PHP常见的6个错误提示及解决方法
Jul 07 PHP
PHP实现的曲线统计图表示例
Nov 10 PHP
PHP环境搭建(php+Apache+mysql)
Nov 14 PHP
PHP模版引擎原理、定义与用法实例
Mar 29 PHP
PHP文件上传小程序 适合初学者学习!
May 23 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
Jun 25 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(视频)Http下载
2006/12/12 PHP
解析strtr函数的效率问题
2013/06/26 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
使用PHP开发留言板功能
2019/11/19 PHP
jQuery使用andSelf()来包含之前的选择集
2014/05/19 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
2014/11/10 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
对于jQuery性能的一些优化建议
2015/08/13 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
jQuery实现html双向绑定功能示例
2017/10/09 jQuery
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
js实现QQ邮箱邮件拖拽删除功能
2020/08/27 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python 正则式 概述及常用字符
2009/05/07 Python
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
python中文分词教程之前向最大正向匹配算法详解
2017/11/02 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
Python基于内置函数type创建新类型
2020/10/22 Python
python3 re返回形式总结
2020/11/20 Python
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
飞利浦美国官网:Philips美国
2020/02/28 全球购物
派出所所长先进事迹
2014/05/19 职场文书
学习心理学的体会
2014/11/07 职场文书
第一节英语课开场白
2015/06/01 职场文书
论文评审意见
2015/06/05 职场文书
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers