`

php5魔术函数、魔术常量

 
阅读更多
转自http://www.loveiso.com/article/11-06-11/48.html

魔术函数

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

2。__destruct()
当删除一个对象或对象操作终止时被调用。

3。__call()
对象调用某个方法,
若方法存在,则直接调用;
若不存在,则会去调用__call函数。

4。__get()
读取一个对象的属性时,
若属性存在,则直接返回属性值;
若不存在,则会调用__get函数。

5。__set()
设置一个对象的属性时,
若属性存在,则直接赋值;
若不存在,则会调用__set函数。

6。__toString()
打印一个对象的时被调用。如echo $obj;或print $obj;

7。__clone()
克隆对象时被调用。如:$t=new Test();$t1=clone $t;

8。__sleep()
serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。

9。__wakeup()
unserialize时被调用,做些对象的初始化工作。

10。__isset()
检测一个对象的属性是否存在时被调用。如:isset($c->name)。

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

12。__set_state()
调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。

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

魔术常量

1。__LINE__
返回文件中的当前行号。

2。__FILE__
返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。

3。__FUNCTION__
返回函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

4。__CLASS__
返回类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

5。__METHOD__
返回类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。




(1)初识魔术方法
Php5.0发布以来为我们提供了很多面向对象的特性,尤其是为我们提供了好多易用的魔术方法,这些魔术方法可以让我们简化我们的编码,更好的设计我们的系统。今天我们就来认识下php5.0给我们提供的魔术方法。


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;

程序输出:
我被复制了
分享到:
评论

相关推荐

    php 魔术函数和常量一览表

    在PHP编程语言中,魔术函数和常量是其高级特性之一,它们能够在特定条件下自动触发,无需显式调用,从而极大地增强了代码的灵活性和功能。以下是对标题、描述及部分给定内容中提及的PHP魔术函数和常量的详细解析。 ...

    PHP 魔术变量和魔术函数详解_.docx

    在PHP编程语言中,魔术变量和魔术函数是一组特殊的预定义常量和函数,它们的行为与常规常量和函数有所不同,因为它们的值会根据它们在代码中的位置和上下文自动变化。这些特性使得PHP更加灵活,同时也为开发者提供了...

    基于PHP5魔术常量与魔术方法的详解

    在PHP5中,魔术常量和魔术方法是两种特殊的语法结构,它们在特定情况下自动触发,为开发者提供了方便的功能和信息。以下是对这些特性的详细解释: **魔术常量**: 1. `__LINE__`:这个常量返回当前代码行的编号,在...

    PHP的魔术常量__METHOD__简介

    `__METHOD__`魔术常量在PHP5及更高版本中被引入,它返回当前执行的方法名,包括类名和方法名,用双冒号`::`分隔。例如,在以下代码中: ```php <?php class Chhua { function test() { echo __METHOD__; } } $e...

    PHP5.3中新增的魔术常量__DIR__

    在PHP编程语言中,魔术常量(Magic Constants)是一类特殊的预定义常量,它们的值根据其在代码中的位置自动变化。这些常量的名字通常由两个下划线(__)开头,使得它们在普通变量中脱颖而出。在PHP 5.3版本中,为了...

    PHP程序设计-3期(KC016) 经验技巧2-2 魔术常量.doc

    在PHP编程语言中,魔术常量扮演着特殊的角色,它们提供了关于代码执行环境的动态信息。这些常量的值会根据它们在代码中的位置而自动调整,为开发者提供了便利。以下是一些重要的PHP魔术常量及其详细解释: 1. **__...

    PHP程序设计-3期(KC016) 拓展知识2-2 魔术常量.doc

    5. **`__dir__`**:这个魔术常量返回包含该语句的文件所在的目录的绝对路径。与`__file__`不同,它只返回目录路径,不包含文件名。示例中的输出是:"d:\xampp\htdocs\test",即 moshu.php 文件所在的目录。 6. *...

    PHP程序设计-3期(KC016) 常见问题2-2 魔术常量.docx

    魔术常量非常有用,可以提供有关当前脚本、函数、类或命名空间的信息,从而帮助开发者更好地理解和调试程序。本文将详细介绍PHP中的几个常用的魔术常量,并通过示例来解释它们的具体用法。 #### 魔术常量详解 1. *...

    PHP中几个常用的魔术常量

    在PHP编程语言中,魔术常量是一类特殊常量,它们的值会随着代码执行环境的变化而自动更新。这些常量通常以两个下划线 "__" 开头,以提供有关当前代码上下文的信息。以下是对七个常用魔术常量的详细说明: 1. **__...

    PHP 中魔术常量的实例详解

    - `__LINE__`魔术常量用于获取当前代码行的行号,在这个例子中它将输出当前行号,假设为5(因为构造函数的开始处即为第5行)。 - `__FILE__`魔术常量用于获取当前执行脚本的完整路径和文件名,比如`E:\wamp\...

    PHP之基础语法函数

    PHP 是一种广泛使用的服务器端脚本语言,它提供了许多有用的语法函数和魔术常量,以下是 PHP 之基础语法函数的知识点总结: ### 魔术常量 魔术常量是 PHP 提供的一种特殊的常量,它们的值将根据它们在代码中的位置...

    PHP 魔术方法整理

    除了魔术方法外,PHP还提供了一些特殊的常量,称为魔术常量。这些常量根据其所在上下文提供有关脚本运行时的信息。 ##### 1. `__LINE__` - 当前行号 返回文件中的当前行号。在调试过程中非常有用,可以快速定位...

    PHP程序设计-3期(KC016) 课后习题2-2 魔术常量.doc

    在PHP编程语言中,魔术常量和魔术方法是两种特殊的功能,它们在特定情况下自动触发,使得代码能够处理一些特定的场景。以下是关于这些概念的详细说明: **魔术常量**: 1. `__FILE__`: 返回当前脚本的完整路径和...

    PHP编程基础--PHP常量.ppt

    这些预定义常量涵盖了PHP的环境信息、错误级别、魔术常量等多种类别,为开发者提供了方便。 在编写PHP程序时,合理使用常量可以提高代码的可读性和维护性。例如,可以定义配置常量来存储数据库连接信息、应用路径等...

    php 魔术常量详解及实例代码

    PHP中的魔术常量是预定义的常量,它们在特定条件下自动设置,为开发者提供了方便的信息,例如关于类、函数、文件位置等的详细信息。这些常量的名称以两个下划线开头和结尾,因此被称为“魔术常量”。下面我们将深入...

    详解PHP中的8个魔术常量

    PHP中的魔术常量是指那些在PHP脚本中具有特殊含义的预定义常量,它们的值会根据代码中所在的上下文环境自动改变。这些魔术常量不同于由扩展库定义的其他预定义常量,因为它们不需要加载任何扩展即可使用,也不区分大...

    PHP函数参考手册大全

    13. 常量 14. 表达式 15. 运算符 16. 流程控制 17. 函数 18. 类与对象(PHP 4) 19. 类与对象(PHP 5) 20. 异常处理 21. 引用的解释 IV. 安全 22. 简介 23. 总则 24. 以 CGI 模式安装时 25. 以 Apache 模块安装时 ...

Global site tag (gtag.js) - Google Analytics