手机
当前位置:查字典教程网 >编程开发 >php教程 >详解php的魔术方法__get()和__set()使用介绍
详解php的魔术方法__get()和__set()使用介绍
摘要:先看看php官方文档的解释:__set()isrunwhenwritingdatatoinaccessibleproperties.__ge...

先看看php官方文档的解释:

__set() is run when writing data to inaccessible properties.

__get() is utilized for reading data from inaccessible properties.

究竟用中文怎么翻译呢?

inaccessible :n. 难达到;难接近;无法理解。

有代码有真相:

复制代码 代码如下:

<?php

error_reporting(E_ALL);

class stu{

private $a;

private $b = 0;

public $c;

public $d = 0;

//这里的 private 可以用 protected public 替代

private function __get($name) {

return 123;

}

//这里的 private 也可以用 protected public 替代

private function __set($name, $value) {

echo "This is set function";

}

}

$s = new stu();

var_dump($s->a); //output: 123

var_dump($s->b); //output: 123

var_dump($s->c); //output: null

var_dump($s->d); //output: 0

var_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

?>

结果分析:

如果没有__get方法,执行 var_dump($s->a) var_dump($s->b) 会有致命的错误

如果没有__get方法,执行 var_dump($s->e) 会有一个notice,提示没有定义属性 $e

总结:

1. 从一个难以访问的属性读取数据的时候 __get() 方法被调用

2. 向一个难以访问的属性赋值的时候 __set() 方法被调用

3. 难以访问包括:(1)私有属性,(2)没有初始化的属性

4. __isset() __unset() 也类似

【详解php的魔术方法__get()和__set()使用介绍】相关文章:

php获取系统变量方法小结

PHP获取数组的键与值方法小结

基于文本的访客签到簿

隐性调用php程序的方法

简单谈谈php中的unicode和utf8编码

拼音码表的生成

php跨服务器访问方法小结

php中命名空间namespace用法介绍

php函数重载的替代方法

typecho插件编写教程(三):保存配置

精品推荐
分类导航