PHP中魔术方法的总结和使用

PHP中魔术方法的总结和使用
魔术方法是PHP面向对象的特性,它们是在特定情况下触发的。它们从双下划线开始。你可以理解它们为挂钩。使用模式方法可以很容易地实现PHP面向对象的重载(重载意味着动态创建属性和方法)。

1。__construct,__destruct

__constuct叫当对象被建立;

__destruct明确破坏对象或脚本在脚本结束时调用;

2。__get,__set

__set时称为一个属性分配是不可获得的或没有财产

__get被调用时,它读取非接触或非存在的性质

3。__isset,__unset

__isset时调用isset()或空()被称为非接触或不存在的属性

__unset被称为不可访问或不存在的属性时,设置

4.__call, __callStatic

的__call调用时调用的方法是不可获得的或不存在的

__callstatic调用非接触或非被称为存在的静态方法

5。__sleep,__wakeup

__sleep被调用时使用序列化,这是有用的当你不需要保存大量的对象的所有数据

__wakeup是当使用序列化,可以用来初始化一些对象称为

6。__clone

当调用对象克隆时,它用于调整对象的克隆行为。

7。__tostring

当一个类被转换成字符串时,它被称为

8。__invoke

函数方式调用对象时调用。

9。__set_state

静态方法被调用时,var_export出口类称为()。__set_state的返回值作为返回值的var_export。

10。__debuginfo

当调用var_dump()打印一个对象,它被称为(当你不想打印所有属性)适用于php5.6版

PHP魔术方法使用如下示例:
< PHP

类的魔法
{
公开测试的var =美元;

创建对象时的构造函数调用,
公共功能__construct()
{
回声'__construct叫'。php_eol;
}

对对象的引用被删除,对象被销毁,调用出口()被调用,脚本被关闭
公共功能__destruct()
{
回声'__destruct叫'。php_eol;
}

对于调用属性分配时不可访问或不存在的
公共功能__set($name,美元的价值)
{
$;
回声'__set叫'。php_eol;
}

读不到或没有属性
公共功能__get($name)
{
回声名称;
回声'__get叫'。php_eol;
}

调用时不可访问或不存在
公共功能__call($name,$参数
{
回声。美元的名字。崩溃(-,为论证);
回声'__call叫'。php_eol;
}

调用时静态方法调用不可访问或不存在。
公共静态函数__callstatic($name,$参数)
{
回声。美元的名字。崩溃(-,为论证);
回声'__callstatic叫'。php_eol;
}

在人迹罕至的或不存在的属性称为 / isset()或()称为空
公共功能__isset($name)
{
回声名称;
回声'__isset叫'。php_eol;
返回true;
}

设置 / /属性不可访问或不存在时,调用
公共功能__unset($name)
{
回声名称;
回声'__unset叫'。php_eol;
}

当 / /连载之称,它是有用的当你不需要保存大量的对象的所有数据
公共功能__sleep()
{
回声'__sleep叫'。php_eol;
返回的数组('var1111111111);
}

当 / /序列化被调用时,它可以用来做一些对象初始化
公共功能__wakeup()
{
回声'__wakeup叫'。php_eol;
美元-> var =测试后唤醒;
}

当一个类被转换为一个字符串时
公共功能__tostring()
{
返回'__tostring叫'。php_eol;
}

当克隆对象用于克隆行为调整对象时调用该对象。
公共功能__clone()
{
回声'__clone叫'。php_eol;
}

当函数调用/对象调用时
公共功能__invoke()
{
回声'__invoke叫'。php_eol;
}

当调用var_export( / /)派生类,这种方法称为静态的__set_state返回值作为返回值的var_export。
公共静态函数__set_state($ ARR)
{
返回'__set_state叫'。php_eol;
}

当调用var_dump() / /打印对象调用(当你不想打印所有属性的php5.6版)
公共功能__debuginfo($ ARR)
{
回声'__debuginfo叫'。php_eol;
返回的数组(
无功= >测试来回__debuginfo
);
}
}

$ M =新的魔法(); / / __construct称为()
$ M -> not_exist_property =试验; / / __set称为()
echo $ M -> not_exist_property; / / __get称为()
$ M -> ABC(1,2,3); / / __call称为()
回声isset($m -> not_exist_property); / / __isset()调用返回bool值
unset($m -> not_exist_property); / / __unset称为()
echo $ TMP =连载($m); / / __sleep称为()
序列化($ TMP); / / __wakeup称为()
$ M1 =克隆百万元; / / __clone()被调用,对象的引用是通过默认情况下,复制和对象可以使用clone关键字实现
$ M(); / / __invoke()
eval($ M2 =。var_export($m,真的)。';');var_dump(每平方米);
var_dump(百万美元);
最后,__destruct()被称为 / /

*
结果uff1a
__construct叫
not_exist_property-test__set叫
not_exist_property__get叫
abc-1,2,3__call叫
not_exist_property__isset叫
1not_exist_property__unset叫
__sleep叫
O:5:魔术:1:{:13:var1111111111 ;N;} __wakeup叫
__destruct叫
__clone叫
__invoke叫
字符串(20)__set_state叫

1级魔法#(1){
公共= $ var
字符串(4)测试
}
__destruct叫
__destruct叫
* /

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部