PHP5中魔术方法函数有哪几个,请举例说明各自的用法

魔术方法:

__construct() :实例化对象时被调用;

__destuct():当删除一个对象或者对象操作终止是被执行;

__call():调用对象不存在方法时被调用;

__get():调用对象不存在的属性时被调用;

__set():设置对象不存在的属性时被调用;

__toString():打印一个对象时被调用,比如echo $obj,print($obj);

__clone():克隆对象时被调用,比如$t = new Test();$tt = clone $t;

__sleep():serialize之前被调用,若对象比较大,想做一些删除在序列化,可以考虑使用该方法;

__wakeup():unserialize之前被调用,做些对象的初始化;

__isset():检测对象是否存在属性的时候被调用,如 isset($c->name);

__unset():unset一个对象属性时被调用,如:unset($c->name);

__set_state():调用var_export时被调用,用__set_state的返回值作为 var_export的返回值;

__autoload():实例化一个对象时,如果对应的类不存在,在该方法被调用。

魔术常量:

__LINE__:返回当前行号;

__FILE__:返回文件的完整路径和文件名,如果用在包含文件里面,则返回包含文件名,自 php4.0.2后,__FILE__总是包含一个绝对路径,而在此前的版本有时候会包含一个相对路径;

__FUNCTION__:返回函数名称(自 php4.3.0新加的)。自php5起本常量返回该函数被定义时的名称,区分大小写,在php4中该值总是小写;

__CLASS__:返回类的名称,自 php4.3.0新加的,自php5起本常量返回该类被定义时的名称,区分大小写,在php4中该值总是小写的;

__METHOD__:返回类的方法名。 php5新加的

http://www.itdadao.com/articles/c15a1125846p0.html

时间: 2024-10-29 06:18:19

PHP5中魔术方法函数有哪几个,请举例说明各自的用法的相关文章

PHP5中魔术方法函数有哪几个

__sleep __wakeup __tostring __set_state __contruct __destruct __call __get __set __isset __unset __clone __autoload

PHP5中魔术方法

魔术函数 1.__construct() 实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用. 2.__destruct() 当删除一个对象或对象操作终止时被调用. 3.__call() 对象调用某个方法, 若方法存在,则直接调用: 若不存在,则会去调用__call函数. 4.__get() 读取一个对象的属性时, 若属性存在,则直接返回属性值: 若不存在,则会调用__get函数. 5.__set() 设置一个对象的属性

对php面向对象中魔术方法的认识

<?php//header(charset="utf8");    //echo 'hey 这里是描述我对php 面向对象中各种魔术方法的认识.';/* *魔术方法是在一些特定情况下会自动调用的一些php系统自定义函数 *这些函数都很有个性,他们统一以__两个 _ (下划线)开头. * 下面对于php 中这些常用的魔术方法一些个人认识. **/class demo {    public $name;    public $age; //当实例化这个类,首先会自动调用的方法 __

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

1. 先有方法,然后再有委托,最后再有事件 2. 思考能不能将 A方法 作为参数,传递给 B方法呢? eg: 在传统的编程方式中,A方法 调用 B方法的方式如下: //洗菜 public void Washing(string vegetables){ Console.WriteLine("清洗"+ vegetables); } //做家务 public void DoingHousework( ){ //洗菜.. Washing("土豆");//直接调用 } 能不

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

在为书中版本是3.X的,但2.X不太支持直接调用. 所以,在PYTHON2.X中,要在内部类中调用外部类的方法,就必须得实例化外部类,然后,传入实例进行调用. 花了我两个小时啊,资料没找到,自己一个一个想法调试,真的失败了三四十次,PRINT了N多~~~:) class DiagramFactory: @classmethod def make_diagram(Class, width, height): return Class.Diagram(width, height) @classmet

python中单例模式的实现-通过闭包函数和魔术方法__new__实现单例模式

1.通过闭包函数实现单例模式: # 使用闭包函数实现单例 def single(cls, *args, **kwargs): instance = {} def get_instance(): if cls not in instance: instance[cls] = cls(*args, **kwargs) return instance[cls] return get_instance @single class Apple: pass a = Apple() b = Apple() p

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

最近,在用file_get_contents函数来取得文本的内容的时候,出现了一个情况(如下),苦思冥想了n久,不得其解,最后,果然还是得靠百度啊..... 百度到一个解释,下面是原文: PHP5中的file_get_contents函数获取文件内容,实际是按二进制来读取的,所以,当你用file_get_contents去获取一个带BOM的UTF-8文件时,它并不会把UTF-8的BOM去掉,当你把读取 的内容当作文本内容来进行一些操作时,可能会发生一些意想不到的结果.这并不能算作一个BUG,因为

scala(一)方法&amp;函数

写在前面 众所周知,scala一向宣称自己是面向函数的编程,(java表示不服,我是面向bean的编程!)那什么是函数? 在接触java的时候,有时候用函数来称呼某个method(实在找不出词了),有时候用方法来称呼某个method,虽然method的中文翻译就是“方法”,但对于java来说,方法和函数是等价的,或者说没有函数这个概念. 而对于scala,这两者似乎有一个较为明确的边界. 你会发现满世界的函数,而你却在写方法 Scala 方法&函数 方法 Scala的方法和java可以看成是一样

PHP 中 16 个魔术方法详解

前言 PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的构造函数 __destruct(),类的析构函数 __call(),在对象中调用一个不可访问方法时调用 __callStatic(),用静态方式中调用一个不可访问方法时调用 __get(),获得一个类的成员变量时调用 __set(),设置一个类的成员变量时调用 __isset(),当对不可访问属性调用isset()或emp