手机
当前位置:查字典教程网 >编程开发 >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中is_file()函数使用指南

php实现随机显示图片方法汇总

基于文本的访客签到簿

第十节 抽象方法和抽象类 [10]

php常见的页面跳转方法汇总

拼音码表的生成

PHP脚本的10个技巧(4)

php显示时间常用方法小结

Mysql的常用命令

php获取系统变量方法小结

精品推荐
分类导航