用户定义的魔术方法:什么是“魔术”;文档化的魔术功能”;


User defined magic methods: What is "documented magic functionality"?

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

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将所有以__开头的函数名保留为magic。建议您不要在PHP中使用带有__的函数名,除非您想要一些文档化的神奇功能。

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

除非你想要一些有文档记载的神奇功能。

这到底意味着什么?是否存在创建用户定义的__magicMethods()的实际原因?

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

EDIT-更清楚地说:假设您为自己的业务逻辑实现了一个名为__toNumber()的方法。在PHP的未来版本中,他们决定无论何时将对象用作数字(可能在执行$result = 3 * $yourObject时),都将调用神奇的方法__toNumber()。。。您的对象将有一些"神奇"的文档功能,即使您没有特别添加它

这意味着永远不要为函数使用以__开头的名称,除非您希望在PHP手册中记录神奇的功能。