问题标签 [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 投票
3 回答
98 浏览

php - 没有__get函数的php,你不能从某些实例中获取值?

自从我的技术书告诉我,我想知道这是不是真的,例如:

好吧,这对我有用,这本书说不是为了在课堂外使用它,它没有创建一个 __get 函数。我有点困惑。

0 投票
1 回答
120 浏览

php - Immediate 1-line magic method call on new PHP object

I'd like to immediately call a magic method (__call()) on a newly constructed object. Example:

Ideal (but gets a parse error):

Working:

Is this possible? I know PHP 5.4 brought immediate 1-line object method calling (http://docs.php.net/manual/en/migration54.new-features.php) so I'm not sure why this isn't working.

0 投票
1 回答
26 浏览

php - 如何为对象定义通用方法/捕获所有方法?

在对象成员的相同概念上,我可以定义通用 __get 和 __set。
我如何为方法做同样的事情?

如果你明白我的意思,你非常欢迎编辑我的语言。

0 投票
1 回答
312 浏览

powershell - powershell 对象是否有“神奇功能”?

在 PHP 中,如果您需要,可以使用“魔术方法”。__toString()例如,如果一段代码尝试回显对象,则该方法用于回显特定字符串。这是一个使用 PHP 的示例:

哪个会返回:

Powershell中是否有一个“神奇的功能”可以做到这一点?

0 投票
2 回答
28976 浏览

python - 交互式 Python:尽管 line_profiler 已正确导入,但无法让 `%lprun` 工作

问题

大多数 iPython “魔术函数”对我来说都很好: %hist, %time,%prun等。但是,我注意到%lpruniPython 无法找到它,因为我最初安装了它。

尝试解决

然后我发现我应该安装line_profiler模块。我已经安装了这个模块,但似乎仍然无法让魔法功能正常工作。如果我尝试调用%lprun,iPython 仍然找不到该函数。如果我用全名(line_profiler.magic_lprun)调用它,可以找到该函数,但我根本无法让它工作。下面是我所做的一个例子(这是从“Python for Data Analysis”一书中逐步完成的):

成功使用%prun

[在:]

正如预期的那样,我得到了一个很好的答案:

[出去:]

我可以做分析魔术功能%prun

[在:]

[出去:]

使用失败%lprun

但是当我尝试时%lprun,我什么也得不到:

[在:]

[出去:]

如果我尝试使用其标准名称调用该函数,它也不起作用:

[在:]

[出去:]

但是该库已正确导入,或者至少它是这样说的:

[在:]

[出去:]

[在:]

[出去:]

似乎我应该配置一些额外的东西,以便可以识别我添加的这些新魔法功能。我无法通过网络搜索找到任何东西。

我将 Spyder 作为 IDE 运行(仍然使用 iPython 作为控制台),但我也直接使用 iPython 和 iPython notebook 进行了尝试。我没有任何形式的运气。

0 投票
1 回答
537 浏览

php - __call() 魔术函数在 PHP 中是如何工作的?

我有一个名为 $obj 的对象。我已经覆盖了__call该类的函数,因此当我调用时$obj->setVariableName($value)会发生这种情况:$obj->variableName = $value. 我不知道$obj->setVariableName($value)项目中何时以及如何调用。因此,在运行应用程序期间会发生这种情况:

当我编写额外的函数setVariable3时,它就可以工作了。不知道setVariable3是怎么调用的,是直接$obj->setVariable3调用还是用类似的函数调用call_user_func_array

什么问题可能__call不起作用setVariable3

更新:现在我知道这setVariable3是从 a$form->bind($user)和正在运行的$user->setVariable3('foo')作品中调用的。(这是一个 ZF2+Doctrine 项目)

0 投票
1 回答
299 浏览

php - 将变量传递给 __wakeup()

我将某些对象存储在数据库中。数据库中的每个节点都携带一个序列化对象。节点可以有孩子,因此对象也可以有孩子。因此,我想$children用包含其直接子级的数组填充对象中的属性。当对象被反序列化时$children应该被填充。

为了避免从外部这样做,我想我宁愿让对象本身来做。但是,该对象不知道它属于哪个数据库条目。因此,当__wakeup()被调用时,对象缺少加载其自己的相应数据库条目所需的信息。

看起来最好的方法是能够将变量传递给__wakeup(),尽管我知道它unserialize()没有提供这样的选项。

我无法找到有关此的任何信息。我正要得出结论,除了使用全局之外,这是不可能的,这不是我选择采取的路线。

是否可以?如果是,如何?

0 投票
1 回答
1446 浏览

python - Python重载变量赋值

我有一个类定义

现在,当我更改self.content时,我希望self.checksum会自动计算。我想象中的东西会是

有什么神奇的功能吗?还是有任何事件驱动的方法?任何帮助,将不胜感激。

0 投票
1 回答
73 浏览

python - 为什么 len() 执行我班级的 __set__ ?

我已经在 Django 中实现了一个自定义模型字段。它是一个图像字段,除了直接分配文件外,还允许分配 URL 字符串以从中加载图像。

一般来说,该领​​域有效。但出于某种原因,Django 本身在内部为其分配了字符串值。每次使用该字段的模型查询集被过滤时,__set__都会使用字符串调用,以便触发 except 子句中的 print 语句Error fetching upload/to/50e170bf-61b6-4670-90d1-0369a8f9bdb4.png

我可以缩小对django/db/models/query.pyDjango 1.7c1 的调用范围。

为什么导致我的字段__set__被执行的行?我可以验证输入值是一个有效的 URL 来解决这个问题,但我想先知道原因。

0 投票
2 回答
74 浏览

php - PHP:无法定位正在使用的函数(似乎没有定义)

我在看别人的代码。有类调用诸如GetSku(),WriteOrder($order)等函数,但我无法找到这些函数的位置。我已经检查过……</p>

  • 其他脚本或类包含:未定义显式或魔术函数 ( __call)
  • grep -rHn "n *GetSku" /path/to/codebase: 什么都不返回
  • Sublime 的 cTags: 没有找到
  • 原开发者知识库:我发邮件请求他返回错误

这些神秘的功能,字面意思就是……</p>

什么可以定义并且它们起作用?以某种方式自定义魔术功能?某种动态功能?我像一只拿着 iPhone 的猴子一样挠头。