标签: magic-methods

PHP - 使用__get和$ this

通常,如果我有一个对象,$foo并且我想拦截对其中一个属性的访问,那么让我们说bar,在使用时$foo->bar,我可以使用魔术方法__get.

从我所看到的(这里)__get在与...交互时不起作用$this.我发现这种奇怪和不一致.

超出这种行为的原因是什么?

php magic-methods

-1
推荐指数
1
解决办法
273
查看次数

删除 PHP 对象;还有 unset() 和 __destruct

这些是否正确:

  1. 任何 PHP 对象在运行后总是会被删除(就像它的代码一样)。

  2. unset($objectName)只是刺激无论如何都会发生的事情。删除会快一点(从 RAM 内存),但最终是完全相同的事情。

  3. __destruct就像在删除对象之前运行的事件,因此我们可以拥有它也可以不拥有它。任何代码都可以在其中运行。

unset()有什么关系吗__destruct?就像它会直接转到那个(作为唯一的步骤)然后删除?

php oop destructor magic-methods

-2
推荐指数
1
解决办法
1717
查看次数

__destruct 是由它自己运行还是我需要使用 unset() 或 register_shutdown_function() 才能使其工作

a) 每次处理代码时 __destruct 都会单独运行吗

b) 或者,不,您需要使用 unset($objectName) 才能运行(另一个选项是 register_shutdown_function() )。

c) 还有其他方面与此相关吗?就像它在这个或那个时自行工作一样,你也可以使用这个或那个来让它运行,任何东西......

php oop destructor magic-methods php-7

-2
推荐指数
1
解决办法
780
查看次数

其他编程语言的魔术方法

Python 有诸如__add____mul____cmp__等等(称为魔术方法)之类的方法,它们被用作类方法,并且可以赋予加法(+)、乘法(*)、比较(==)……类的两个实例不同的含义. 我的问题是其他语言有类似的方法吗?我熟悉 Java、C++、ruby 和 PHP,但从未遇到过这样的事情。我知道所有四个都有一个对应于 的构造函数方法__init__,但是其他魔术方法呢?

我尝试在谷歌上搜索“其他编程语言中的魔术方法”,但没有显示任何相关内容,可能它们在不同语言上有不同的名称。

language-agnostic magic-methods

-2
推荐指数
1
解决办法
385
查看次数

标签 统计

magic-methods ×4

php ×3

destructor ×2

oop ×2

language-agnostic ×1

php-7 ×1