博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 魔术方法__set() __get() 方法
阅读量:6762 次
发布时间:2019-06-26

本文共 1233 字,大约阅读时间需要 4 分钟。

看代码:

a); //output: 123var_dump($s->b); //output: 123var_dump($s->c); //output: nullvar_dump($s->d); //output: 0var_dump($s->e); //output: 123 $s->a = 3; //output: This is set function$s->c = 3; //no output$s->f = 3; //output: This is set function?>

由代码可以知道,

  1. 从一个难以访问的属性读取数据的时候 __get() 方法被调用
  2. 向一个难以访问的属性赋值的时候 __set() 方法被调用
  3. 难以访问包括:(1)私有属性,(2)没有初始化的属性
  4. __isset() __unset() 也类似

应用,定义配置变量,

public $ossClient,$bucket;protected $config =   array(    'maxSize'           =>  -1,    // 上传文件的最大值    'allowExts'         =>  array(),    // 允许上传的文件后缀 留空不作后缀检查    'allowTypes'        =>  array(),    // 允许上传的文件类型 留空不做检查        'savePath'          =>  '',// 上传文件保存路径    'saveRule'          =>  'uniqid',// 上传文件命名规则    'hashType'          =>  'md5_file',// 上传文件Hash规则函数名    );public function __get($name){    if(isset($this->config[$name])) {        return $this->config[$name];    }    return null;}public function __set($name,$value){    if(isset($this->config[$name])) {        $this->config[$name]    =   $value;    }}public function __isset($name){    return isset($this->config[$name]);}

上面的public属性不会调用到魔法方法,

配置中的一些变量,则会调用到魔法方法。

这种机制对于配置设置还是很有帮助的。

本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/5411403.html,如需转载请自行联系原作者

你可能感兴趣的文章
CentOS修改系统时间
查看>>
编写一个主函数 main,使用两个值作为实参,并输出它们的和。
查看>>
3D打印机切片与控制软件
查看>>
PHP empty、isset、isnull的区别
查看>>
数字按照不同格式转换成字符串
查看>>
__weak如何实现目标值自己主动设置nil的
查看>>
thttpd增加gzip压缩响应报文体功能,以减少传输数据量
查看>>
Windows下搭建IOS开发环境(一)
查看>>
linux 网络协议分析---3
查看>>
如何将SVN patch的修改做成old&new文件
查看>>
script加载文件
查看>>
统计学常见分布、概念
查看>>
java的PrintStream(打印输出流)详解(java_io)
查看>>
Redis Keys 命令 - 查找所有符合给定模式( pattern)的 key
查看>>
python基础-PyYaml操作yaml文件
查看>>
C# WPF 实现鼠标固定在指定范围内运动
查看>>
canvas绘图,html5 k线图,股票行情图
查看>>
Web前端设计模式——制作漂亮的弹出层
查看>>
Mozilla正计划修复Firefox遗留8年的漏洞
查看>>
Google C++单元测试框架(Gtest)系列教程之二——断言、函数测试
查看>>