1,__construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用。

我们知道 php5对象模型 < ,所以__construct()作为类的默认的构造函数 而不会调用同类名函数 和__construct()方法的话,php5会默认调用构造函数 ,那么如果我们同时定义构造函数 是类的构造函数 的函数>

2,__destruct() 当删除一个对象或对象操作终止的时候,调用该方法。

class Test
{function __destruct(){echo "end";}
}
$t = new Test();
将会输出    end

我们就可以在对象操作结束的时候进行释放资源之类的操作

3,__get() 当试图读取一个并不存在的属性的时候被调用。

如果试图读取一个对象并不存在的属性的时候,PHP就会给出错误信息。如果在类里添加__get方 法,并且我们可以用这个函数 实现类似java中反射的各种操作。

class Test
{public function __get($key){echo $key . " 不存在";}
}
$t = new Test();
echo $t->name;
就会输出:   name 不存在

4,__set() 当试图向一个并不存在的属性写入值的时候被调用。

class Test
{public function __set($key,$value){echo '对'.$key . "附值".$value;}
}
$t = new Test();
$t->name = "aninggo";
就会输出:   对 name 附值 aninggo

5,__call() 当试图调用一个对象并不存在的方法时,调用该方法。

class Test
{public function __call($Key, $Args){echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true);}
}
$t = new Test();
$t->getName(aning,go);
程序将会输出:
您要调用的 getName 方法不存在。参数是:
Array
([0] => aning[1] => go
)

6,__toString() 当打印一个对象的时候被调用

这个方法类似于java的toString方法,当 我们直接打印对象的时候回调用这个函数

class Test
{public function __toString(){return "打印 Test";}
}
$t = new Test();
echo $t;
运行echo $t;的时候,就会调用$t->__toString();从而输出  打印 Test

7,__clone() 当对象被克隆时,被调用

class Test
{public function __clone(){echo "我被复制了!";}
}
$t = new Test();
$t1 = clone $t;
程序输出:我被克 隆了!

转载于:https://www.cnblogs.com/zhuiluoyu/p/4953856.html

__construct __destory __call __get __set相关推荐

  1. php魔术方法get,PHP魔术方法之__get,__set详解(代码实例)

    本文目标: 1.了解PHP中魔术方法的定义 2.了解__get()魔术方法的使用场景 3.掌握__get()魔术方法的用法 4.了解__set()魔术方法的使用场景 5.掌握__set()魔术方法的用 ...

  2. PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __uns

    1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的 __get( $property ) 当调用一个未定义的属性时访问此方法 __set( $property, $va ...

  3. __call、__set 和 __get的用法

    1. __call的用法 PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法.如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用. 例:__ ...

  4. mysql面试100题及答案_PHP面试100题汇总

    PHP面试100题汇总 1,Http 和Https的区别 第一:http是超文本传输协议,信息是明文传输,https是具有安全性的ssl加密传输协议 第二:http和https使用的是完全不同的连接方 ...

  5. php开发工程师考试试卷,腾讯PHP开发工程师面试试卷

    1. 请对pOSIX风格和兼容perl风格两种正则表达式的主要函数进行类比说明 ereg preg_match ereg_replace preg_replace 2. 请说明在php.ini中saf ...

  6. 腾讯新闻php面试题,腾讯PHP面试题及参考答案

    1. 请对POSIX风格和兼容Perl风格两种正则表达式的主要函数进行类比说明 ereg preg_match ereg_replace preg_replace 2. 请说明在php.ini中saf ...

  7. 腾讯php开发工程师面试题

    1 . 请对 POSIX 风格和兼容 Perl 风格两种正则 表达式的主要函数进行类比说明 ereg preg_match ereg_replace preg_replace 2 . 请说明在 php ...

  8. PHP 100道面试题

    1,Http 和Https的区别 第一:http是超文本传输协议,信息是明文传输,https是具有安全性的ssl加密传输协议 第二:http和https使用的是完全不同的连接方式,端口也不一样,前者8 ...

  9. Dede二次开发程序详解(dede爱好者必备)

    Dede二次开发程序详解(dede爱好者必备) 调用说明:推荐会员(带用户头像)  [quote] {dede:sql sql="SELECT mid,mtype,userid,uname, ...

最新文章

  1. 朋友问我学习高并发需不需要阅读源码,我是这样分析的!!
  2. mysql分区字段创建索引_MySQL分区字段列有必要再单独建索引吗?
  3. Nginx+Redis+Ehcache:大型高并发与高可用的三层缓存架构总结
  4. Java受查异常和运行时异常的理解
  5. 洛谷P2680 运输计划(倍增LCA + 树上差分 + 二分答案)
  6. 做音视频开发,你读对书了吗?(内有福利)
  7. 【二】Windows API 零门槛编程指南——CreateWindow 窗口创建 “万字长篇专业术语全解”
  8. 公网可用的RTMP、RTSP测试地址(更新于2021年3月)
  9. NOIP2013NOIP2018USACO 三倍经验铺路题巧妙解法
  10. 一行命令自动给图片戴上口罩,硬核操作!
  11. 去掉谷歌浏览器中烦人的广告
  12. python dbf转excel_如何在python中将dbf转换为csv?
  13. 简谈BOOST升压电路
  14. 极域电子教室师生端连接不上怎么解决
  15. w10取消自带杀毒服务器,win10家庭版关闭杀毒服务如何设置_win10家庭版怎么关闭自带杀毒系统-win7之家...
  16. 2022茶艺师(中级)考试题模拟考试题库及模拟考试
  17. 微信读书vscode插件_推荐 10 款有趣的 VSCode 插件
  18. Webpack 4教程 - 第四部分,使用SplitChunksPlugin分离代码
  19. MMA-Mathematica初步了解和使用-MMA
  20. 载波层叠调制在多电平变换器及两电平变换器中的应用

热门文章

  1. php网站采集器,PHP采网址(列表页处理)插件的开发方法
  2. 多媒体分析与理解_多媒体在课堂教学中应用的研究研究报告(二)
  3. delphi接口带上请求头是什么意思_Gin框架中使用JWT进行接口验证
  4. [leetcode]5170. 验证二叉树
  5. 数据库期末总结笔记( 零基础 )--数据库安全性与完整性-范式-E-R图
  6. 递归法:走楼梯; 旋转数组的最小数字(递归法和改进二分法)
  7. 2017乌鲁木齐ICPC: I. A Possible Tree(带权并查集)
  8. bzoj 2724: [Violet 6]蒲公英(分块预处理)
  9. HDU 5934 2016CCPC杭州 B: Bomb(Trajan强连通)
  10. 冒泡法排序(详细注释,易懂)