问题标签 [magic-function]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
8018 浏览

php - 什么时候/应该在 PHP 中使用 __construct()、__get()、__set() 和 __call()?

一个类似的问题讨论了__construct,但我把它留在了我的标题中,供搜索找到这个问题的人使用。

显然, __get 和 __set 带有一个参数,即正在获取或设置的变量。但是,您必须知道变量名称(例如,知道该人的年龄是 $age 而不是 $myAge)。因此,如果您必须知道变量名,尤其是在使用您不熟悉的代码(例如库)时,我不明白这一点。

我找到了一些解释__get()__set()和的页面__call(),但我仍然不明白它们为何有用或何时有用。

0 投票
2 回答
2311 浏览

alias - 在 IPython 中,如何为 %magics 创建别名?

假设我想为 %edit -x 创建别名 %xed。我该怎么做?

0 投票
1 回答
1763 浏览

php - 魔术函数和继承

我想知道是否可以创建一个扩展另一个魔术对象的魔术对象(使用 PHP)。

0 投票
4 回答
6453 浏览

php - PHP中empty()的神奇功能是什么?

不应该__isset,因为isset()empty()

0 投票
4 回答
1215 浏览

php - 普通 setter 和 getter 之间的区别

我为我的会话变量使用了一个神奇的 getter/setter 类,但我看不出普通的 setter 和 getter 之间有什么区别。

编码:

现在我注意到的第一件事是我必须调用$session->_unset('var_name')来删除变量,这没有什么“神奇”的。

其次,当我尝试使用$session->some_var它时不起作用。我只能使用$_SESSION['some_var'].

我看过 PHP 手册,但功能看起来和我的一样。

我是不是做错了什么,或者这些功能真的没有什么神奇之处。

0 投票
2 回答
1513 浏览

python - Mercurial/Python - 下划线函数有什么作用?

在 Mercurial 中,许多扩展将其帮助/语法字符串包装在对下划线函数的调用中,如下所示:

这让我感到困惑,因为它似乎没有必要(编写扩展指令没有提到它)并且似乎没有在类中定义 _,所以我想知道这是否是我没有的一些特殊语法'不明白,也许另一种说法是 lambda,或者也许是恒等函数?另外,我想知道这种方法(无论它是什么)的好处是像文档建议的那样仅对原始字符串有什么好处。

我在 Python 文档中看到的任何内容都没有提到这样的函数,所以我不确定这真的是 Python 问题还是 Mercurial 问题。

这里有两个使用这种结构的例子(查看cmdtable文件底部附近的字典)

0 投票
2 回答
3061 浏览

php - 函数的魔术函数__call()?

php 中的魔术函数 __call() 用于类中。是否有任何类似的魔术功能,而不是功能?就像 __autoload() 用于函数一样。

例如像这样

0 投票
1 回答
149 浏览

php - 在数组类属性上使用 __get() 以自动传播类

我有一个 activerecord 模型,其中包含一个数组:“$sessions”。我想做的是把它变成一个二维数组,以便按以下方式索引:

现在要在上面添加奶油,我想这样做,以便用户可以这样做:

并且__get将了解类变量(“$sessions”)中的该位置是否已经存在一个对象,并将该属性添加/编辑到该类,否则它将在该位置创建一个名为“Session”的新类。

我有点困惑如何让 PHP(如果可能)在数组的索引上获得 __get。

0 投票
2 回答
1560 浏览

python - python内置函数与魔术函数和覆盖

可能重复:
拦截元类上的运算符查找
如何拦截对新样式类中python“魔术”方法的调用?

考虑以下代码:

输出让我感到惊讶:

  • str(a)应该映射到魔术方法 a.__str__()吗?
  • 如果我删除了 custom ClassA.__str__(),那么 ClassA.__getattribute__()仍然没有接听电话。怎么来的?
0 投票
1 回答
17861 浏览

php - 从 Magento 集合中获取数据

我有一个集合,其中包含一行数据。如果我跟随,

它给了我一个像下面这样的数组,

但是当我这样做时,$collection->getField1()它会说未定义的方法。据我所知,php magic getter 应该像这样工作。不是吗?

任何想法如何在没有 foreach 构造的情况下获得此值。