通常,如果我有一个对象,$foo并且我想拦截对其中一个属性的访问,那么让我们说bar,在使用时$foo->bar,我可以使用魔术方法__get.
从我所看到的(这里)__get在与...交互时不起作用$this.我发现这种奇怪和不一致.
超出这种行为的原因是什么?
这些是否正确:
任何 PHP 对象在运行后总是会被删除(就像它的代码一样)。
unset($objectName)只是刺激无论如何都会发生的事情。删除会快一点(从 RAM 内存),但最终是完全相同的事情。
__destruct就像在删除对象之前运行的事件,因此我们可以拥有它也可以不拥有它。任何代码都可以在其中运行。
unset()有什么关系吗__destruct?就像它会直接转到那个(作为唯一的步骤)然后删除?
a) 每次处理代码时 __destruct 都会单独运行吗
b) 或者,不,您需要使用 unset($objectName) 才能运行(另一个选项是 register_shutdown_function() )。
c) 还有其他方面与此相关吗?就像它在这个或那个时自行工作一样,你也可以使用这个或那个来让它运行,任何东西......
Python 有诸如__add__、__mul__、__cmp__等等(称为魔术方法)之类的方法,它们被用作类方法,并且可以赋予加法(+)、乘法(*)、比较(==)……类的两个实例不同的含义. 我的问题是其他语言有类似的方法吗?我熟悉 Java、C++、ruby 和 PHP,但从未遇到过这样的事情。我知道所有四个都有一个对应于 的构造函数方法__init__,但是其他魔术方法呢?
我尝试在谷歌上搜索“其他编程语言中的魔术方法”,但没有显示任何相关内容,可能它们在不同语言上有不同的名称。