用户定义的魔术方法:什么是"记录的魔术功能"?

Wes*_*rch 8 php magic-methods

我的问题很简单,这里是上下文:

http://php.net/manual/en/language.oop5.magic.php

魔术方法

函数名__construct(),__destruct(),__call(), __callStatic(),__get(),__set(),__isset(),__unset(),__sleep(),__wakeup(),__toString(),__invoke(),__set_state()和__clone()在PHP类魔法.除非您想要与它们相关联的魔术功能,否则您不能在任何类中使用这些名称的函数.

PHP保留所有以__开头的函数名称作为魔法.除非您需要一些记录的魔术功能,否则建议您不要在PHP中使用带__的函数名.

我得到了这些方法的用途以及如何使用它们.我不明白的是:

...除非你想要一些记录的魔术功能.

那有什么意思?是否有创建用户定义的实际原因__magicMethods()

Nic*_*tti 7

我认为它们只是意味着最好不要__用作你的方法的起始名称,因为PHP已经为他的魔术方法保留了这个约定,如果你将它用于一个方法,它可能在将来被覆盖并具有一些神奇的功能.至少那是我理解的

编辑 - 更清楚:让我们说你为自己的业务逻辑实现了一个名为的方法__toNumber().在PHP的未来版本中,他们决定每当一个对象被用作数字时(也许当你这样做时$result = 3 * $yourObject)__toNumber()将调用魔术方法......即使你没有特别添加,你的对象也会有一些"魔术"记录的功能它