__clone():克隆的时候会调用__clone方法;
__cal:当类里面没有方法的时候会调用__call方法;
__toString:当echo的时候会调用__toString方法;
__autoload:自动加载,当类路径找不到的时候会调用__autoload方法,这个方法很好的解决了需要引用多个include_once的问题;
__sleep():当对象被串行化那一瞬间调用这个函数
__wakeup():将对象进行反串行化的时候调用这个函数

 

Four类

class Four
{
public $name;
public $age;
public function __construct($name,$age)
{
$this->name = $name;
$this->age = $age;
} //克隆的时候会调用__clone方法
public function __clone()
{
$this->age = 0;
} //当echo的时候会调用__toString方法
public function __toString()
{
return "调用toString方法"; } //当类里面没有方法的时候会调用__call方法
function __call($name, $arguments)
{
return "没有{$name}这个方法,不能这么玩";
} public function show(){
echo "我叫{$this->name},今年{$this->age}";
}
//当对象被串行化那一瞬间
function __sleep()
{ // TODO: Implement __sleep() method.
echo "我要睡着了<br>"; return array('name','age');
} function __wakeup()
{ echo "我又回来了";
// TODO: Implement __wakeup() method.
}
}

  

 主函数main

//当类路径找不到的时候会调用__autoload方法
function __autoload($name){
$path = $name.".class.php";
include_once $path;
} $four = new Four("房明",18);
$four2 = clone $four; //此时的$four2调用的是__clone方法,所以此时年龄会变为0
$four->show();
echo "<br>";
$four2->show();
echo "<br>";
echo $four; //$four是一个对象,随意此时调用__toString方法
echo "<br>";
echo $four->score(); //$four里面没有score方法,所以会调用__call方法
//将对象进行串行化
$str1=serialize($five); //此时得到的是__sleep返回的值
file_put_contents("five.txt",$str1); $str=file_get_contents("five.txt");
//将对象进行反串行化
$obj=unserialize($str);

  

php学习十二:其他魔术方法的更多相关文章

  1. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

  2. PHP十六个魔术方法

    PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的构造函数 __destruct ...

  3. Scala学习十二——高阶函数

    一.本章要点 在Scala中函数是”头等公民“(可以作为参数,返回值,赋值给其他); 可以创建匿名函数,通常还会交给其他函数; 函数参数可以给出需要稍后执行的行为; 许多集合方法都接受函数参数,将函数 ...

  4. PHP之十六个魔术方法详细介绍

    PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用.这里进行详细介绍,感兴趣的小伙伴们可以参考一下. PHP中把以两个下划线__开头 ...

  5. Java学习笔记二十二:Java的方法重写

    Java的方法重写 一:什么是方法的重写: 如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法. 语法规则 返回值类型.方法名.参数类型及个数都要与父类继承的 ...

  6. Objective-C学习笔记(二十二)——初始化方法init的重写与自己定义

    初学OC.对init这种方法不是非常了解.我们如今来分别对init方法进行重写以及自己定义,来加深对他的了解. 本样例也是用Person类来进行測试. (一)重写init方法. (1)在Person. ...

  7. Java学习笔记十二:Java中方法的重载

    Java中方法的重载 什么是方法的重载呢? 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方法名称都为 s ...

  8. k.tt 研究下生成的逻辑代码:从壹开始前后端分离 [.netCore 填坑 ] 三十二║ 四种方法快速实现项目的半自动化搭建

    更新 1.更新小伙伴 @大龄Giser 提出好点子:试试VS的插件扩展:VSIX.ItemProject等,将T4模板给制作插件,这里先记下,有懂的小伙伴可以自己先试试,我会在以后更新. 2.感谢小伙 ...

  9. JVM学习十二:JVM之性能监控工具

    前面我们学习了很多JVM相关的理论知识,那么本节将重点讲述的是工具的使用,正所谓:工欲善其事,必先利其器.因此,本节介绍常用的性能监控工具,用于性能监控和问题排查. 一.系统性能监控 系统性能工具用于 ...

随机推荐

  1. js弹出window.open窗口

    <html> <head> <SCRIPT LANGUAGE="JavaScript"> function openwin() {OpenWin ...

  2. HTML中的布局方式:absolute、relative、fixed、static

    在CSS中关于定位的内容是: position:relative | absolute | static | fixed     static(静态) 没有特别的设定,遵循基本的定位规定,不能通过z- ...

  3. 通过google浏览器的开发者工具修改cookie值

    打开一个页面F12,然后再刷新下.点到如下图位置刚可以添加或重设cookie的值.修改cookie的值时,需要注意要清除下cookie.不然修改的cookie不生效.

  4. 关于github上开源nineoldandroids兼容动画的笔记

    github上面有个样例非常好的列举了NineOldAndroids兼容动画的使用方法.下载了下来然后执行測试了下: 由于要引用nineoldandroids的项目,我这里直接把它的源码拷贝进去了,用 ...

  5. Android——控件AutoCompleteTextView 自动提示

    Android:控件AutoCompleteTextView 自动提示 在输入框中输入我们想要输入的信息就会出现其他与其相关的提示信息,这种效果在Android中是用AutoCompleteTextV ...

  6. apt-get install 的替换命令及mysql安装问题的解决

    Some packages could not be installed. This may mean that you haverequested an impossible situation o ...

  7. 删除TP数据库缓存

    删除 /Runtime/Data/_fields/ 缓存表文件

  8. MapReduce 学习(一)

    首先我们先来欣赏一下MapReduce的执行过程吧,如下图,自己看,不解释了. Map 和 Reduce 的处理都是基于Key/Value来进行的,在Map中对文件的每一行进行处理,有两个输入参数,K ...

  9. js - html中跳转出frame框架

    echo '<script>alert("密码修改成功,请重新登录!");window.parent.location.href = "'.site_url( ...

  10. 运行带distance field的Hiero

    从http://libgdx.badlogicgames.com/releases/下载zip包并解压,切换到解压后的目录,执行: java -cp gdx.jar;gdx-natives.jar;g ...