PHP 魔术函数使用说明


Posted in PHP onMay 14, 2010

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 相关文章推荐
CodeIgniter php mvc框架 中国网站
May 26 PHP
linux下 C语言对 php 扩展
Dec 14 PHP
用PHP的ob_start() 控制您的浏览器cache
Aug 03 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
Apr 09 PHP
解析php DOMElement 操作xml 文档的实现代码
May 10 PHP
PHP魔术方法__GET、__SET使用实例
Nov 25 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
Feb 15 PHP
Yii数据模型中rules类验证器用法分析
Jul 15 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
Jul 03 PHP
laravel 实现向公共模板中传值 (view composer)
Oct 22 PHP
tp5.1 框架join方法用法实例分析
May 26 PHP
PHP 事务处理数据实现代码
May 13 #PHP
php 常用类汇总 推荐收藏
May 13 #PHP
php echo 输出字符串函数详解
May 13 #PHP
php 图片加水印与上传图片加水印php类
May 12 #PHP
php access 数据连接与读取保存编辑数据的实现代码
May 12 #PHP
简单PHP上传图片、删除图片实现代码
May 12 #PHP
php 删除记录同时删除图片文件的实现代码
May 12 #PHP
You might like
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
PHP数据分析引擎计算余弦相似度算法示例
2017/08/08 PHP
php表单处理操作
2017/11/16 PHP
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
AngularJS使用ng-repeat指令实现下拉框
2016/08/23 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
Python实现新浪博客备份的方法
2016/04/27 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
Python读取实时数据流示例
2019/12/02 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
全国优秀辅导员事迹材料
2014/05/14 职场文书
广告宣传策划方案
2014/05/21 职场文书
护校行动方案
2014/05/31 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
单位推荐信范文
2015/03/27 职场文书
隐形的翅膀观后感
2015/06/10 职场文书
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技