PHP5.0后,php面向对象提成更多方法,使得php更加的强大!!
一些在PHP叫魔术方法的函数,在这里介绍一下:其实在一般的应用中,我们都需要用到他们!!

1.__construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用。
Java代码
class Test { function __construct() { echo "before"; } } $t = new Test();
class Test { function __construct() { echo "before"; } } $t = new Test();
输出是:
start
我们知道php5对象模型 和类名相同的函数是类的构造函数,那么如果我们同时定义构造函数和__construct()方法的话,php5会默认调用构造函数而不会调用__construct()函数,所以__construct()作为类的默认的构造函数
2.__destruct() 当删除一个对象或对象操作终止的时候,调用该方法。
Java代码
class Test { function __destruct() { echo "end"; } } $t = new Test();将会输出end
class Test { function __destruct() { echo "end"; } } $t = new Test();将会输出end
我们就可以在对象操作结束的时候进行释放资源之类的操作
3.__get() 当试图读取一个并不存在的属性的时候被调用。

如果试图读取一个对象并不存在的属性的时候,PHP就会给出错误信息。如果在类里添加__get方法,并且我们可以用这个函数实现类似java中反射的各种操作。
Java代码
class Test { public function __get($key) { echo $key . " 不存在"; } } $t = new Test(); echo $t->name; 就会输出:name 不存在
class Test { public function __get($key) { echo $key . " 不存在"; } } $t = new Test(); echo $t->name; 就会输出:name 不存在
4.__set() 当试图向一个并不存在的属性写入值的时候被调用。
Java代码
class Test { public function __set($key,$value) { echo '对'.$key . "附值".$value; } } $t = new Test(); $t->name = "aninggo"; 就会输出:对 name 附值 aninggo
class Test { public function __set($key,$value) { echo '对'.$key . "附值".$value; } } $t = new Test(); $t->name = "aninggo"; 就会输出:对 name 附值 aninggo

5.__call() 当试图调用一个对象并不存在的方法时,调用该方法。
Java代码
class Test { public function __call($Key, $Args) { echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true); } } $t = new Test(); $t->getName(aning,go);
class Test { public function __call($Key, $Args) { echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true); } } $t = new Test(); $t->getName(aning,go);
程序将会输出:
Java代码
您要调用的 getName 方法不存在。参数是:Array
(
[0] => aning
[1] => 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;程序输出:我被克隆了!
详细出处参考:http://www.jb51.net/article/20494.htm

转载于:https://blog.51cto.com/qinlong/616654

php 魔术方法使用说明详细相关推荐

  1. PHP中的方形按钮怎么敲,php 魔术方法使用说明

    php 魔术方法使用说明 2021-01-23 20:13:0612 PHP5.0后,php面向对象提成更多方法,使得php更加的强大!! 一些在PHP叫魔术方法的函数,在这里介绍一下:其实在一般的应 ...

  2. mysql 魔术设置_PHP之十六个魔术方法详细介绍

    PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的构造函数 __destruct ...

  3. Python最会变魔术的魔术方法,我觉得是它

    在上篇文章中,我有一个核心的发现:Python 内置类型的特殊方法(含魔术方法与其它方法)由 C 语言独立实现,在 Python 层面不存在调用关系. 但是,文中也提到了一个例外:一个非常神秘的魔术方 ...

  4. php超全局变量,魔术常量,魔术方法

    整理了下关于php的基础知识,参考了些资料,如下: 超全局变量 超全局变量 - 超全局变量是在全部作用域中始终可用的内置变量: $GLOBALS $GLOBALS - 引用全局作用域中可用的全部变量 ...

  5. php _set魔术方法的用法,PHP魔术方法__GET、__SET使用实例

    这篇文章主要介绍了PHP魔术方法__GET.__SET使用实例,本文在代码中做了详细的注释,需要的朋友可以参考下 __get() - 读取不可访问属性的值时,__get() 会被调用. __set() ...

  6. 介绍Python的魔术方法 - Magic Method

    前言 在Python中,所有以__双下划线包起来的方法,都统称为"魔术方法".比如我们接触最多的__init__. 有些魔术方法,我们可能以后一辈子都不会再遇到了,这里也就只是简单 ...

  7. 魔术方法 类 序列化_Java序列化魔术方法及其示例使用

    魔术方法 类 序列化 在上一篇文章中, 您需要了解有关Java序列化的所有知识 ,我们讨论了如何通过实现Java序列化来启用类的可序列化性. Serializable接口. 如果我们的类未实现Seri ...

  8. php 魔术方法 多继承,PHP通过魔术方法实现多继承与重载

    PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法.我们是通过魔术方法(magic methods)来实现的.当调用当前环境下未定义 ...

  9. python创建实例会调用哪些魔术方法_Python最会变魔术的魔术方法,我觉得是它!...

    作者:豌豆花下猫 来源:Python猫 在,我有一个核心的发现:Python 内置类型的特殊方法(含魔术方法与其它方法)由 C 语言独立实现,在 Python 层面不存在调用关系. 但是,文中也提到了 ...

最新文章

  1. 使用VisualStudio2010连接CodePlex进行代码管理
  2. FPGAtestbench中如何产生差分时钟
  3. DNS(二)--正反解析及主从配置
  4. 一个小灯泡引发大论战:千万粉丝科普up主翻车,伊朗“唐马儒”、李永乐等下场,30万公里导线引百万网友围观...
  5. swagger导出excel文档_将Swagger2文档导出为HTML或markdown等格式离线阅读
  6. 刘歧:让人生不留遗憾
  7. 使用反射将DataTable的数据转成实体类
  8. android中gradle的作用,Gradle 之 Android 中的应用
  9. 电脑生成siri语音_米家智能台灯1S全新升级,支持小爱和Siri的语音控制
  10. 关闭多个activity
  11. Jupyter Notebook中未显示Conda环境
  12. 2022年低压电工题库及模拟考试
  13. 【机器学习手册】【1】熟练使用向量矩阵和数组 —— 二维矩阵叉乘公式
  14. Qt ui 到底是什么?
  15. ns3网络模拟器使用相关问题
  16. 高盐废水处理工艺——料液精制与除杂
  17. LeetCode 417.太平洋大西洋水流问题
  18. 盘点美国最出人意料的20种高薪职业
  19. 中国时光之美:旅途中的二十…
  20. [原创]中国象棋翻翻棋,休闲,对战,娱乐,小游戏,jQuery小游戏,下载即用,代码注释全(附源码)

热门文章

  1. php投影,box-shadow实现不同角度的投影
  2. mysql运行一下自己就停_MySQL运行一段时间后自动停止问题的排查
  3. 利用innerHTML实现隐显效果-两种实现方法
  4. 前端校验rules写法:
  5. 安卓学习笔记09:常用布局 - 帧式布局
  6. 大数据学习笔记42:Hive - 分桶表
  7. Java Web学习笔记11:JSTL与EL
  8. 安卓案例:利用SQLiteDatabase操作数据库与表
  9. 2017.8.7 序列计数 思考记录
  10. 2017.3.9 Harry and Christmas tree 失败总结