魔术函数:
9.3 构造函数:__construct()
9.3.1 实例化对象时被调用。
9.3.2 在类中,构造函数是用来初始化对象的,利用构造函数,可以操作对象,并改变它的值。
9.3.3 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。
9.3.4 当子类重写了构造函数,子类被实例化时,只调用子类的构造函数,而父类的构造函数不被调用。
9.4 析构函数:__destruct()
9.4.1 当删除一个对象或对象操作终止时被调用。
9.4.2 当该对象的所有引用都被删除,或者对象被显式销毁时执行。
9.5 克隆函数:__clone()
9.5.1 当对象被拷贝(克隆)时直接调用。
9.5.2 如$a = new Action(); $a = $object;
9.6 __set($name, $value)
9.6.1 用$object->a = 17的方式给属性赋值时,如果属性a存在且是public型,那么直接给属性a赋值皆可;
9.6.2 如果属性a不存在或者是protected/private型,就会调用__set($name, $value)方法。
9.6.3 二个参数:属性、属性值。
9.7 __get($name)
9.7.1 用$object->a的方式读取对象的属性时,如果属性a存在且是public型,那么直接返回该属性的值;
9.7.2 如果属性a不存在或者是protected/private修饰的不可直接访问的类型,就会调该方法并以返回值为准。
9.7.3 一般可以使用该方法使外部可限制性地访问内部属性,或者完成类似java中的反射操作。
9.8 __isset($name)
9.8.1 检测一个对象的属性是否存在时被调用。
9.8.2 如:isset($c->name),如果name不存在,则触发该函数。
9.8.3 对不存在或者不可访问的属性使用isset()或者empty()时,__isset()会被调用。
9.9 __unset($name)
9.9.1 销毁一个对象的属性时被调用。
9.9.2 如:unset($c->name),如果name不存在,则触发该函数。
9.9.3 当unset一个不存在或者不可访问的属性时,__unset()会被调用,否则直接unset该属性皆可。
9.10 __call($name, $arguments)
9.10.1 当调用不存在或者不可访问的方法时,会调用__call($name, $arguments)方法。
9.11 __callStatic($name, $arguments)
9.11.1 当在静态方法中调用不存在或者不可访问的方法时,会调用__callStatic($name, $arguments)方法。
9.11.2 这个方法 是PHP5.3里才添加的,比较新。
9.12 __toString()
9.12.1 当打印对象时会被直接调用。如 echo $object; 或 print $obj;
9.12.2 注意:这时候php会抛出一个Catchable fatal error错误;用print_r打印对象不会触发此函数。
9.13 __set_state()
9.13.1 用var_export()输出一个对象时,__set_state()会被调用,输出内容以该魔术方法的返回值为准。
9.13.2 注:var_export()和var_dump()类似,只是var_export()输出的内容符合php语法。
9.14 __autoload($name)
9.14.1 实例化一个对象时,如果对应的类不存在,则该方法被调用。
9.14.2 这个函数比较特殊,这个函数并不是作为类的成员方法使用的。
9.14.3 注意:该方法是全局函数,参数是类的名称。
9.14.4 可以用spl_autoload_register函数来定义其他的函数来代替__autoload
9.15 __sleep()
9.15.1 serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。
9.16 __wakeup()
9.16.1 unserialize时被调用,做些对象的初始化工作。

php5 中魔术方法函数有哪几个的更多相关文章

  1. PHP5中魔术方法

    魔术函数 1.__construct() 实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用. 2.__destruct() ...

  2. 一文解读C# 动态拦截第三方进程中的方法函数(外挂必备)

    一.前言 由于项目需要,最近研究了一下跨进程通讯改写第三方程序中的方法(运行中),把自己程序中的目标方法直接覆盖第三方程序中的方法函数:一直没有头绪,通过搜索引擎找了一大堆解决方案,资料甚是稀少,最后 ...

  3. php中魔术方法有什么用

    在面向对象编程中,PHP提供了一系列的魔术方法,这些魔术方法为编程提供了很多便利.PHP中的魔术方法通常以__(两个下划线)开始,并且不需要显示的调用而是由某种特定的条件出发. __construct ...

  4. C#中的方法(函数),委托和事件

    1. 先有方法,然后再有委托,最后再有事件 2. 思考能不能将 A方法 作为参数,传递给 B方法呢? eg: 在传统的编程方式中,A方法 调用 B方法的方式如下: //洗菜 public void W ...

  5. python中的嵌套类(内部类调用外部类中的方法函数)

    在为书中版本是3.X的,但2.X不太支持直接调用. 所以,在PYTHON2.X中,要在内部类中调用外部类的方法,就必须得实例化外部类,然后,传入实例进行调用. 花了我两个小时啊,资料没找到,自己一个一 ...

  6. PHP5.3魔术方法 __invoke

    这个魔幻方法被调用的时机是: 当一个对象当做函数调用的时候, 如果对象定义了__invoke魔幻方法则这个函数会被调用, class Callme { public function __invoke ...

  7. [调试日志]用php函数var_export把多维数组file_put_contents写入并打印到日志,以方便调试之多维数组,用php5中的var_export函数示例,顺带介绍http_build_query(转)

    一行解决写入日志: file_put_contents("/tmp/jack.txt", var_export($layReturnArr,TRUE),FILE_APPEND); ...

  8. php -- PHP5中file_get_contents函数获取带BOM的utf-8文件内容

    最近,在用file_get_contents函数来取得文本的内容的时候,出现了一个情况(如下),苦思冥想了n久,不得其解,最后,果然还是得靠百度啊..... 百度到一个解释,下面是原文: PHP5中的 ...

  9. scala(一)方法&函数

    写在前面 众所周知,scala一向宣称自己是面向函数的编程,(java表示不服,我是面向bean的编程!)那什么是函数? 在接触java的时候,有时候用函数来称呼某个method(实在找不出词了),有 ...

随机推荐

  1. BZOJ 1367 [Baltic2004]sequence (可并堆)

    题面:BZOJ传送门 题目大意:给你一个序列$a$,让你构造一个递增序列$b$,使得$\sum |a_{i}-b_{i}|$最小,$a_{i},b_{i}$均为整数 神仙题.. 我们先考虑b不递减的情 ...

  2. Python编程:从入门到实践 - pygal篇 - Die

    掷骰子 # die.py 骰子类 from random import randint class Die(): """表示一个骰子的类""" ...

  3. 深入理解B/S与C/S架构

    首先来介绍一下B/S与C/S架构 C/S架构简要介绍 在了解什么是B/S架构之前,我们有必要了解一下什么是C/S架构: C/S架构是第一种比较早的软件架构,主要用于局域网内.也叫 客户机/服务器模式. ...

  4. 利用Selenium实现图片文件上传的两种方式介绍

    在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同. 一.直接利用Selenium实现 这种方式是最简单的一种实现方式,但是依赖于开发的实现. 当 ...

  5. nyoj 2 括号配对问题水

    #include<stdio.h> #include<stack> #include<string.h> #define N  11000 using namesp ...

  6. Eclipse中项目去除Js验证

    删除项目.project文件中的 <buildCommand>   <name>org.eclipse.wst.jsdt.core.javascriptValidator< ...

  7. thrift java示例

    thrift java示例 使用IntelliJ IDEA作为开发工具: 增加proto文件夹,里面写上sayHello.proto syntax = "proto3"; opti ...

  8. 多校第二场 1004 hdu 5303 Delicious Apples(背包+贪心)

    题目链接: 点击打开链接 题目大意: 在一个周长为L的环上.给出n棵苹果树.苹果树的位置是xi,苹果树是ai,苹果商店在0位置,人的篮子最大容量为k,问最少做多远的距离可以把苹果都运到店里 题目分析: ...

  9. openfire 安装部署

    1. openfire安装和配置 本文介绍openfire 在linux上安装部署过程 linux上有两种安装方式,一个是RPM包方式.还有一个是tar.gz压缩包方式, 官方推荐採用RPM包方式,会 ...

  10. Java集合(二):List列表

    在上一节中,介绍了Java集合的总体情况.从这节開始,将介绍详细的类.这里不单单介绍类的使用方法.还会试图从源代码的角度分析类的实现.这一节将介绍List接口及实现类.即列表中的链表LinkedLis ...