php学习十二:其他魔术方法
__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学习十二:其他魔术方法的更多相关文章
- (转)SpringMVC学习(十二)——SpringMVC中的拦截器
http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...
- PHP十六个魔术方法
PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的构造函数 __destruct ...
- Scala学习十二——高阶函数
一.本章要点 在Scala中函数是”头等公民“(可以作为参数,返回值,赋值给其他); 可以创建匿名函数,通常还会交给其他函数; 函数参数可以给出需要稍后执行的行为; 许多集合方法都接受函数参数,将函数 ...
- PHP之十六个魔术方法详细介绍
PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用.这里进行详细介绍,感兴趣的小伙伴们可以参考一下. PHP中把以两个下划线__开头 ...
- Java学习笔记二十二:Java的方法重写
Java的方法重写 一:什么是方法的重写: 如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法. 语法规则 返回值类型.方法名.参数类型及个数都要与父类继承的 ...
- Objective-C学习笔记(二十二)——初始化方法init的重写与自己定义
初学OC.对init这种方法不是非常了解.我们如今来分别对init方法进行重写以及自己定义,来加深对他的了解. 本样例也是用Person类来进行測试. (一)重写init方法. (1)在Person. ...
- Java学习笔记十二:Java中方法的重载
Java中方法的重载 什么是方法的重载呢? 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方法名称都为 s ...
- k.tt 研究下生成的逻辑代码:从壹开始前后端分离 [.netCore 填坑 ] 三十二║ 四种方法快速实现项目的半自动化搭建
更新 1.更新小伙伴 @大龄Giser 提出好点子:试试VS的插件扩展:VSIX.ItemProject等,将T4模板给制作插件,这里先记下,有懂的小伙伴可以自己先试试,我会在以后更新. 2.感谢小伙 ...
- JVM学习十二:JVM之性能监控工具
前面我们学习了很多JVM相关的理论知识,那么本节将重点讲述的是工具的使用,正所谓:工欲善其事,必先利其器.因此,本节介绍常用的性能监控工具,用于性能监控和问题排查. 一.系统性能监控 系统性能工具用于 ...
随机推荐
- 5种漂亮的纯CSS3动画按钮特效
这次我们要来分享一款很不错的CSS3按钮动画,这款CSS3按钮一共有5种动画方式,每一种都是鼠标滑过动画形式,虽然这些动画按钮不是十分华丽,但是小编觉得不像其他按钮那样很难扩展,我们可以修改CSS代码 ...
- signal(SIGCHLD, SIG_IGN);的使用及验证
#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include<stdlib.h ...
- JAVA的包装类2 【转】
怎么理解JAVA中的“包装类” JAVA是一种面向对象语言,java中的类把方法与数据连接在一起,构成了自包含式的处理单元.但在JAVA中不能定义基本类型(primitive type)对象,为了能 ...
- Python中的字符串操作总结(Python3.6.1版本)
Python中的字符串操作(Python3.6.1版本) (1)切片操作: str1="hello world!" str1[1:3] <=> 'el'(左闭右开:即是 ...
- Nginx_lua缓存问题,关闭lua_code_cache
打开nginx.conf配置server{ lua_code_cache off; //关闭lua缓存 重启后生效 server_name localhost; default_type 'text/ ...
- flv网页视频播放
今天需要用到网页视频播放功能,找了一下,发现flowplayer很好用,写了个dome需要的同学,去下载咯 http://download.csdn.net/detail/jine515073/770 ...
- java-上传文件与现实上传文件
项目结构: 项目展示: 数据库: /* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.5.53 : Database - fileupload ********* ...
- PHP无限极分类 - 2 - 无限极评论
参考上一节: 结合ZUI前端框架,制作的无限极评论列表: 项目目录: 代码: <!DOCTYPE html> <html lang="en"> <he ...
- WinInet 小例子
#include <windows.h> #include <wininet.h> #include <string> #include <iostream& ...
- DOM编程 学习笔记(一)
PS:虽然自己JS基本语法算是掌握了,但是其实在JS掌握的只是远远还不够,网页上有太多好看的动态效果都是用JS 做出来的,自己也就仅仅会那么一两个动态的效果,学的只是皮毛...等有空的时候一定要好好的 ...