php魔术方法
2017-04-07 16:26
169 查看
魔术方法总结
__construct
实例化一个对象的时候触发,参数可以根据需求随意添加,可以用来初始化一些成员属性。<?php
classGirl
{
public$name;
public$age;
public$height;
publicfunction__construct($name,$age,$height)
{
$this->name=$name;
$this->age=$age;
$this->height=$height;
}
publicfunctionsay()
{
echo'我叫'.$this->name;
echo'身高'.$this->height;
}
}
$girl=newGirl('刘亦菲','30',170);
$girl->say();
__destruct
脚本运行结束或者对象被销毁的时候会自动触发。<?php
classBoy
{
....
publicfunction__destruct()
{
echo'脚本运行结束了';
}
}
$boy=newBoy();
__get
获取不可访问或不存在的成员属性的时候触发,参数就是属性名。
__set
设置不存在或者不可访问的成员属性的时候触发,参数是属性名,属性值。<?php
classWhiteFace
{
public$face;
private$age;
private$height;
function__get($a)//获取值的时候
{
echo'我被调用了';
}
function__set($name,$value)
{
//echo$name;
//echo$value;
if($name=='age'){
$this->$name=$value;
return;
}
returnfalse;
}
}
$mei=newWhiteFace('屋里帅',25,180);
$mei->age;//$a就是调用的这个属性名。
$mei->height=190;
__unset
触发时机:当用unset()销毁一个不存在或者不可访问的成员属性的时候被触发。<?php
classCat
{
public$name;
private$age;
public$height;
publicfunction__unset($args)
{
echo$this->$args.'被销毁了';
}
}
$bosi=newCat('波斯猫',10,20);l
unset($bosi->age);//输出:10被销毁了。
__isset()
用empty()或isset()去判断一个不存在或者不可访问的成员属性的时候会被触发,参数是属性名。<?php
classCat
{
.......
publicfunction__isset($arg)
{
returnisset($this->$arg);
}
}
isset($bosi->age);
__invoke
将一个对象当做函数调用时会触发该方法,调用时传递了多少个参数这里就写多少个参数。<?php
classDog
{
public$name='wang';
publicfunctionwangwang()
{
echo'旺旺';
}
publicfunction__invoke($a,$b,$c)
{
echo'将对象作为函数使用了';
}
}
$tai=newDog();
$tai(100,200,300);
__toString
当echo一个对象的时候调用,这个函数里面返回什么字符串echo的时候就打印出什么。没有参数,但是有返回值,返回一个字符串,该字符串需要自己定制。<?php
classDog
{
......
publicfunction__toString()
{
return'我的姓名是'.$this->name;
}
}
$tai=newDog();
echo$tai;
__debugInfo
当使用var_dump打印对象的时候会被调用。返回一个自定义的数组,数组里面是需要打印的东西,没有参数。<?php
classDog
{
......
publicfunction__debugInfo()
{
return['name','age'];
}
}
$tai=newDog();
var_dump($tai);
__call()
调用不存在或者不可访问的成员方法的时候会被触发<?php
classDog
{
.......
function__call($name,$args)
{
var_dump($name);//函数名
var_dump($args);
}
}
$tai=newDog();
$tai->eat(100,100);
__callStatic
调用不存在或者不可访问的成员方法时会被触发。classSinger
{
public$name;
privatestaticfunction__callstatic()
{
echo'明星的生活';
}
}
$liu=newSinger();
$liu::living();
__autoload
在当前脚本中去加载一个不存在的类的时候会触发这个方法<?php
function__autoload($name)//$name就是类名
{
echo'我被调用了';
$fileName=$name.'.php';
include$fileName;
}
//include'Car.php';
//自动加载
$bmw=newCar();
$bmw->run();
__sleep
当序列化一个对象的时候会被触发,没有参数,返回一个数组,里面是你要序列化的属性。<?php
classPig
{
public$name;
public$tool;
function__construct($name,$tool)
{
$this->name=$name;
$this->tool=$tool;
}
function__sleep()
{
echo'我要睡觉了';
return['name','tool'];//选择你想序列化的属性
}
function__wakeup()
{
echo'我醒了';
$this->kiss();
}
functionkiss()
{
echo'么么哒';
}
}
$bajie=newPig('猪八戒','钉耙');
//怎么将程序运行中的对象保存起来---》序列化。
$str=serialize($bajie);
//将序列化的字符串写到文件中
file_put_contents('bajie.php',$str);
__wakeup
当反序列化一个对象的时候会被触发。
__clone
当克隆一个对象的时候会被触发。$er=clone$bajie;//克隆的对象跟原来的一模一样
相关文章推荐
- 讲讲php的魔术方法
- php魔术方法
- PHP 5魔术方法应用浅析
- php 魔术方法使用说明详细
- php 魔术方法
- php的魔术方法
- PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toStr
- PHP下划线函数即魔术方法汇总
- PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __uns
- PHP中用魔术方法__autoload()实现类的自动加载
- 有了PHP 5.3的__callStatic魔术方法,就可以做按类名和方法名同时魔术了
- php魔术方法
- php魔术方法和魔术变量
- 腾讯php面试题总结(一) 15个魔术方法的总结
- PHP中的魔术方法总结
- php 魔术方法使用说明
- PHP中的魔术方法总结 :__construct,__destruct ,__call,__callStatic,__get,__set,__isset,__unset,__sleep,__wakeup, __toString.......
- PHP中的魔术方法总结[__construct/__destruct/__get/__set/__isset/__unset/__toString/__clone等]
- php魔术方法和魔术变量、内置方法和内置变量
- PHP魔术方法