`

php5魔术函数、魔术常量

    博客分类:
  • PHP
阅读更多

转自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魔术常量及魔术函数.doc

    常用的php魔术常量和魔术函数,有时候使用魔术函数挺方便的。

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

    魔术常量:1。__LINE__返回文件中的当前行号。2。__FILE__ 返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自PHP4.0.2 起,__FILE__总是包含一个绝对路径,而在此之前的版本有时会包含一个...

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

    我们知道PHP中提供了一个魔术常量(magic constant)__FILE__,用来指向当前执行的PHP脚本。但PHP没有直接提供该脚本所在目录的常量。也就是说如果我们要得到当前PHP脚本所在的目录,需要使用dirname()这个函数:

    PHP 预定义变量、魔术常量和魔术方法功能与用法小结

    本文总结了PHP 预定义变量、魔术常量和魔术方法。分享给大家供大家参考,具体如下: PHP 预定义了一些变量、常量、方法,使用起来很方便,例如直接使用 __DIR__ 获取当前文件所在的目录。 下面分别详细介绍一下 PHP...

    PHP函数参考手册大全

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

    PHP 魔术变量和魔术函数详解

    有八个魔术常量它们的值随着它们在代码中的位置改变而改变。 例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下: __LINE__ 文件中的当前行号。 实例: 复制代码 代码如下: &lt...

    PHP 匿名函数与注意事项详细介绍

    PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,Phar PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,细节修改 PHP5.5:yield, ...

    php魔法函数与魔法常量使用介绍

    php 魔术函数 1。__construct() 实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。 2。__destruct() 当删除一个对象或对象操作终止时被调用。 3。__...

    PHP中类型转换 ,常量,系统常量,魔术常量的详解

    PHP中类型转换 ,常量,系统常量,魔术常量的详解 1.自动类型转换; 在运算和判断时,会进行自动类型转换; 1)其他类型转为bool,判断时转换; 1)整型转布尔型:0转false,非0转为true; 2) 空字符串和‘0'(“0”)...

    PHP5与MySQL5从入门到精通.rar

    2.4.2 魔术常量 2.5 表达式 2.6 运算符 2.6.1 算术运算符 2.6.2 字符串运算符 2.6.3 比较运算符 2.6.4 逻辑运算符 2.6.5 位运算符 2.6.6 赋值运算符 2.6.7 数组运算符 2.6.8 类型运算符 2.6.9 错误控制...

    PHP中魔术变量__METHOD__与__FUNCTION__的区别

    自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。 文档解释都是说返回函数(方法)的名字。区别在于: __FUNCTION__只是返回方法的名字; __METHOD__返回类的名字和方法...

    详解PHP匿名函数与注意事项

    PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,Phar PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,细节修改 PHP5.5:yield, ...

    PHP5 完整官方 中文教程

    PHP5 完整官方 中文教程 版权信息 前言 入门指引 简介 简明教程 安装与配置 安装前需要考虑的事项 Unix 系统下的安装 Mac OS X 系统下的安装 Windows 系统下的安装 PECL 扩展库安装 还有问题? 运行时配置 语言参考 ...

    php5手册.chm

    php5.chm中文手册最新下载 PHP 手册 序言 入门指引 简介 简明教程 安装与配置 安装前需要考虑的事项 Unix 系统下的安装 Mac OS X 系统下的安装 Windows 系统下的安装 云计算平台上的安装 FastCGI 进程管理器(FPM)...

    php5中文手册20111124

    常量 表达式 运算符 控制结构 函数 类与对象 命名空间 异常处理 引用的解释 预定义变量 预定义异常 预定义接口 Context options and parameters Supported Protocols and Wrappers 安全 简介 总则 以 CGI 模式安装时...

    PHP官方正版中文帮助手册

     常量  表达式  运算符  控制结构  函数  类与对象  命名空间  异常处理  引用的解释  预定义变量  预定义异常  预定义接口  Context options and parameters  Supported Protocols and Wrappers  ...

    PHP5中文参考手册

    常量 表达式 运算符 控制结构 函数 类与对象(PHP 4) 类与对象(PHP 5) Namespaces 异常处理 引用的解释 安全 简介 总则 以 CGI 模式安装时 以 Apache 模块安装时 文件系统安全 数据库安全 错误报告 使用 Register...

    php魔术变量用法实例详解

    本文实例讲述了php魔术变量用法,其中__DIR__是php5.3新增的,分享给大家供大家参考。具体用法分析如下: 系统常量 __FILE__ 当前文件名 __LINE__ 当前行数 __FUNCTION__ 当前函数名 __CLASS__ 当前类名 __METHOD__ ...

    php手册PHP5研究室编无乱码版本chm

    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