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面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
Sep 30 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
Jul 15 PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
Jun 29 PHP
PHP支付系统设计与典型案例分享
Aug 02 PHP
教你在header中隐藏php的版本信息
Aug 10 PHP
Yii2使用表单上传文件的实例代码
Aug 03 PHP
swoole和websocket简单聊天室开发
Nov 18 PHP
PHP递归实现汉诺塔问题的方法示例
Nov 25 PHP
PHP信号处理机制的操作代码讲解
Apr 19 PHP
php源码的安装方法和实例
Sep 26 PHP
php获取小程序码的实现代码(B类接口)
Jun 13 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编写的简单页面跳转功能实现代码
2013/11/27 PHP
javascript Prototype 对象扩展
2009/05/15 Javascript
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
微信小程序图片加载失败时替换为默认图片的方法
2019/12/09 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
angular共享依赖的解决方案分享
2020/10/15 Javascript
JavaScript Html实现移动端红包雨功能页面
2021/01/10 Javascript
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
比驿:全球酒店比价网
2018/06/20 全球购物
J2EE包括哪些技术
2016/11/25 面试题
商业活动邀请函
2014/02/04 职场文书
《从现在开始》教学反思
2014/04/15 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
升国旗演讲稿
2014/09/05 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
实习单位证明范例
2014/11/17 职场文书
驾驶员管理制度范本
2015/08/06 职场文书
药房管理制度范本
2015/08/06 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书
tomcat下部署jenkins的方法
2022/05/06 Servers
MySQL主从切换的超详细步骤
2022/06/28 MySQL